From: <Saved by Windows Internet Explorer 7>
Subject: Ruby on Rails Development: Ruby on Rails Deprecations Part 2: ActiveRecord
Date: Sun, 20 Apr 2008 17:12:37 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="multipart/alternative";
	boundary="----=_NextPart_000_001F_01C8A309.BB7A80A0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/icon18_edit_allbkg.gif

R0lGODlhEgASAOMAANDHu6pqNFRTUOWjJQAAABYWFhAJA9CPKUk1ErmIF+KjUygVBjMmBv/BMfy2
I9DHuyH5BAEAAA8ALAAAAAASABIAAARP8MlJq72TYLyM3hQRBB4oFcoxlhujAMAKIk6jKMKHIY0z
qLoLz3dIFEAMBzGBABkGy+aGkCAGpBjRcmEKAFKB4KUAg4kvhPJ5TCBgTfBKBAA7

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/icon_delete13.gif

R0lGODlhDQANALMPAIqKiv///7S0tPHx8ZKSkuTk4+rq6v39/eTk5Orq6e3t7efo5/39/v3+/f7+
/u7n5SH5BAEAAA8ALAAAAAANAA0AAAQ58ElAK5D4gcD5nVZodSQpnh/ACINgEMU3OawLy9pRv3EG
6K0EAYEDNGpCou8YvPkOh4HCsFBiUJ8IADs=

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.feedburner.com/fb/images/pub/feed-icon32x32.png

iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAK/INwWK6QAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAUzSURBVHjavFdbbFRVFF3nPjoz7dTWTitt
aW0jUDRAUqaNojyqREnEQKgfUj9MqqAmhqRt/OCD4CuY+Kckoh+aiGKC+gMJbdHoRysJ8dkhhmJL
NdDKtJU+6GMK87j3Hs85d2Z6HzNtMYWb3Dn3NWftvfba+5xNYDl+e6Fkj6yqb/oDRbWq14vlPBLR
KCITkxf0ROLt+hNjp1PPSRK4kA3vF1dXNRcWlyA2OQU9eos9opAkAiKxD+XkKO6t15aRWO7J/Mgm
AZU8MEgexgZHMX518Dh72sYMmVKShnxWuWHdHtxKIDIYTgMuDzgfmSOIQkYMpdUF8OY92Hytt4/j
vkg47czzU16iQovM3QFwmNck+Yyduu7D6NA0Z6JR4THntFs9V4tWQg6Ui3s6MwKDncsFTnXKLJhD
SeUK3AgPtyhccDzmVs999buRt/1Vm4i0od+hX7+MRG87jPGB/w1u8FPj9xEw7McVrnYuOCvtpjTt
h3J/nTg99c8LRhKhr6D3dTB5R24bXFwbMXBsyZzeoXaycEpJ95TB09AGX/NpqLVNtw8urnVzLvHj
FNxiFqRy2OOHuqUVnue+ACkoWzo4O6lGzTmuHq6nPvY2m9rVqjrIK2rMEKxqyG5NPAKt+wjo0Lkl
gfNxJkZMA3KJvqRUk3z5UFY3QH14P0h+WUY79HPvgv7VuSg4ZRGY1YgZgqXmORccF17sy2ehnf9A
eO085K2HQFbtXBScj0LcpgF2cN+WV+DZ/LJQu6gD4R7oV7pBJwbSgtMvfiPoVp56DySwxm7EtkMs
1WdAB7qzggsDJKQYsHucSkOudrkiCPWR/fA2nYCn8SNIK4NptSMyAu3sAdDRkIsJdfth0LzSrODU
oPNZ4KI9SxJI5UHk7D4GdQfz2us31c7CoHMjRkKuDPHseCMrONVhNcDJwMJpKFVvg9L4OaTiNWm1
x789KCqkrXhVBiEz0WYCT2nAzQAD1/vaETv1GrRfP4Vx5cfMNcDPwvP0h0DhanPym7OIf/+O67vc
J1/PCJ4KgdzaUP6Wz+dU+5yIL6fV+PsHGAOdwlPpvvUOyeeAVGyCdqkDNB6DPjsBSrnndfOGevOh
3RhGItxvA+fX1CtbGFhgYUFkFMZPR6F1HnClHq8HyubWtJexX06CRmdt33hrd7nA7SFY4qoGpnYu
OKcRykPPgDCBcsHx9Iv+fNL2PueBehCWUfYQIIMGLOCcOmXDXsh1+yCt35tUPfvzGFuSvzvoinXO
xqa02qOhM6733nVP2MAdaej2XN11DPKjLZCD+yBvahGCo7JfTKAN9UD7s8Oe9zUNIhz8fWI8DG2k
38WCFdxugANcXrvTVd1IEbuv3Jour7Hzn7jLMBNfKs7R3i67gRVrbeCOEDhinmWhAatsqdquM2Xz
HZINhK2cqTjHr/XZdVJUbgN3MWAVXKbSyg9jesRW2xP9di+lwrL5ojM3m2H/kG9hwcIA37c71W6w
JdW2J2S5nrjYbq/t1AHAhJsKQeyfPvf6IMJgghPJhFZ4x0KlfLFvt22du45Au/A1SOlGc0P672XX
whLtOcM0kTTEMMd0qkVmMNXxMd/tsedUjInr4SQDgOfeXMSiN0FCL5WHah4L1qqYXPJOJlttd+a5
M+YpcG5poLYKQ5f+6JJ4r8bbJYP47hq4r7QAs9PjYNhHJd4o8l5taiwuOpa7AS4XKqI/5NjJbTna
WK92nLdLuhQAJayRNMiygXPBeQN+Qbvu0zDc3y+aUzhbkGR73sI7ljvUnndx2q3t+X8CDAD66Ftr
IL864AAAAABJRU5ErkJggg==

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/icon18_wrench_allbkg.png

iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAA1VBMVEX///9/f38gSoc0ZaTr6efs
6uj+/v6vr691kK5shaFlhKxje5WduNL5+fj09PSRpr7o5+bo5+Tk4+Hj4+Lj4uHX4u3f39/t6+mf
n56EnLaNmKWVlZGBk6mOjo7u8/aBipWGhobz8vH49/bt6+pZfatUfK77+/tgdo9gd5Hq6urq6ej/
//+krbaXpbaQpr76+vnBwcGkutDT3+rY2NfA0eL4+Pf6+vqdts7PzcrMzMywxtvc3Nzz8/JbcYmi
rryhtMjw9PedsMpFcant8vZfX17y8e/w8PCUA2JZAAAAAXRSTlMAQObYZgAAALRJREFUeF5N0FWu
AzEMQNHYgUEoMzPDQ2bY/5LqcVL13c+j2LIi8gBAuMLQyiq5dibXZxsNyVgePSI2nVh69iQvIhoz
yTvJUlwClPW+TWIIKCj81utKqQS+UhKu+3BLqU9ZmzC4qxBRptOGuIT+cYdyM4N/cvV2H+GhYs6G
zWorihdolHKG773OPPZfEYzWbJh9bFmEgPzdgOjpu28lt9IPzWIQ32QsbC9/IMiCyMrl5xCduE6l
mw1pZ6RL9QAAAABJRU5ErkJggg==

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/widgets/3319451950-blogarchive.css

#ArchiveList .toggle {
	CURSOR: pointer; FONT-FAMILY: Arial, sans-serif
}
#ArchiveList .toggle-open {
	LINE-HEIGHT: 0.6em; _font-size: 1.7em
}
#ArchiveList {
	TEXT-ALIGN: left
}
#ArchiveList A.post-count-link {
	TEXT-DECORATION: none
}
#ArchiveList A.post-count-link:link {
	TEXT-DECORATION: none
}
#ArchiveList A.post-count-link:visited {
	TEXT-DECORATION: none
}
#ArchiveList A.toggle {
	TEXT-DECORATION: none
}
#ArchiveList A.toggle:link {
	TEXT-DECORATION: none
}
#ArchiveList A.toggle:visited {
	TEXT-DECORATION: none
}
#ArchiveList A.toggle:hover {
	TEXT-DECORATION: none
}
.BlogArchive #ArchiveList UL LI {
	BORDER-TOP-WIDTH: 0px; LIST-STYLE: none none outside; PADDING-LEFT: =
15px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat =
0% 0%; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; TEXT-INDENT: -15px; =
BORDER-RIGHT-WIDTH: 0px
}
.BlogArchive #ArchiveList UL UL LI {
	PADDING-LEFT: 1.2em
}
.BlogArchive #ArchiveList UL {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; LIST-STYLE-IMAGE: none; BORDER-BOTTOM-WIDTH: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; =
LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px
}
.BlogArchive #ArchiveList UL UL {
	MARGIN-TOP: 5px
}
.BlogArchive #ArchiveList UL.posts LI {
	PADDING-LEFT: 1.3em
}
#ArchiveList .collapsed UL {
	DISPLAY: none
}

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/css/blog_controls.css

.item-control {
	DISPLAY: none
}
.item-control A {
	TEXT-DECORATION: none! important
}
.item-action A {
	TEXT-DECORATION: none! important
}
.widget-item-control {
	FLOAT: right
}
.icon-action {
	MARGIN: 0px 0px -5px 0.5em; BORDER-TOP-STYLE: none! important; =
BORDER-RIGHT-STYLE: none! important; BORDER-LEFT-STYLE: none! important; =
BORDER-BOTTOM-STYLE: none! important
}
.delete-comment-icon {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: =
url(/img/icon_delete13.gif) no-repeat left 50%; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}

@media All   =20
{
.BLOG_mobile_video_class {
	DISPLAY: none
}

}

@media Handheld   =20
{
.BLOG_mobile_video_class {
	DISPLAY: inline
}
.BLOG_video_class {
	DISPLAY: none
}

}

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/widgets/3597482671-blog.css

.backlink-toggle-zippy {
	PADDING-RIGHT: 11px; BACKGROUND: =
url(http://www.blogger.com/img/triangle_ltr.gif) no-repeat left center; =
CURSOR: hand; MARGIN-RIGHT: 0.1em
}
.expanded-backlink .backlink-toggle-zippy {
	BACKGROUND-IMAGE: url(http://www.blogger.com/img/triangle_open.gif)
}
.collapsed-backlink .collapseable {
	DISPLAY: none
}
.status-msg-wrap {
	FONT-SIZE: 110%; MARGIN: 10px auto; WIDTH: 90%; POSITION: relative
}
.status-msg-border {
	BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FILTER: =
alpha(opacity=3D40); BORDER-LEFT: #000000 1px solid; WIDTH: 100%; =
BORDER-BOTTOM: #000000 1px solid; POSITION: relative; -moz-opacity: .40; =
opacity: .40
}
.status-msg-bg {
	Z-INDEX: 1; FILTER: alpha(opacity=3D30); WIDTH: 100%; POSITION: =
relative; BACKGROUND-COLOR: #cccccc; -moz-opacity: .80; opacity: .80
}
.status-msg-body {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; Z-INDEX: 4; PADDING-BOTTOM: =
0.3em; WIDTH: 100%; PADDING-TOP: 0.3em; POSITION: absolute; TEXT-ALIGN: =
center
}
.status-msg-hidden {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: hidden; =
PADDING-BOTTOM: 0.3em; PADDING-TOP: 0.3em
}
.status-msg-wrap A {
	PADDING-LEFT: 0.4em; TEXT-DECORATION: underline
}
#comments .blogger-comment-icon {
	PADDING-LEFT: 20px; BACKGROUND: url(/img/b16-rounded.gif) no-repeat =
left 50%; LINE-HEIGHT: 16px
}
.blogger-comment-icon {
	PADDING-LEFT: 20px; BACKGROUND: url(/img/b16-rounded.gif) no-repeat =
left 50%; LINE-HEIGHT: 16px
}
#comments .openid-comment-icon {
	PADDING-LEFT: 20px; BACKGROUND: url(/img/openid16-rounded.gif) =
no-repeat left 50%; LINE-HEIGHT: 16px
}
.openid-comment-icon {
	PADDING-LEFT: 20px; BACKGROUND: url(/img/openid16-rounded.gif) =
no-repeat left 50%; LINE-HEIGHT: 16px
}
#comments .anon-comment-icon {
	PADDING-LEFT: 20px; BACKGROUND: url(/img/anon16-rounded.gif) no-repeat =
left 50%; LINE-HEIGHT: 16px
}
.anon-comment-icon {
	PADDING-LEFT: 20px; BACKGROUND: url(/img/anon16-rounded.gif) no-repeat =
left 50%; LINE-HEIGHT: 16px
}
.paging-control-container {
	FONT-SIZE: 80%; FLOAT: right; MARGIN: 0px 6px 0px 0px
}
.unneeded-paging-control {
	VISIBILITY: hidden
}

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.blogger.com/img/navbar/1/btn_search_this.png

iVBORw0KGgoAAAANSUhEUgAAAGAAAAAPCAMAAAAs5DqFAAAAdVBMVEUfWIwJQ3h+seRhlckmX5MJ
QnhLgbUQSn88c6dSiLtonNAIQngYUYYIQndCd6t3qt0uZpo1bKFCeKxvo9ZDeq4/cqQwYpJCeKsS
S4ARRHdZjsISSoBDeKw+caMwYpMvYpI/caMlXJESSn0mXZElXZESSX0mXZKP7sSuAAABZUlEQVR4
XrWS14rlQAwFVerknH3jhM3//4mLLJjdl4F58cFGgS6KNpbfb9+G5ay8Xu7y/uvJabn9vMh+aznR
sMvSnyho20GufYJ51JmoqhGyZqwfZ5BVM1FBI7CpasBHVKNjcJAbhA1sl73U0DPIQoJxKsVISxMa
Q6gU1orun8CLj2zBMRcwqQmwXaeCvQKJqwy9CZqDjBGKzlqsrxtEC77/EPjoAsfAT7sguqhqsKR2
kZeUQFadiBoCTMrRN2P0Ox37D4GPLnDMT6z1/wK2EFUhschgAnj4x4U8hjFbnwOiHXz6iRxzAUXF
BIgWmop5JbpArqmFKj7q4+6FUMfaZHTa0dQxfiKom+IYGFmpGNqxbpN2dGNVKdAO8mKCHOqChBCE
IEiwhzxT6lBZb1vw4iMhiGNwkBPkEGbkYa2VDKlf/Dc9Le0ir7cTBf1tl8v3Z5vS/Yvxg1/O88+b
/Ljs1+Ws7O/3v7uMJw2wTNG0AAAAAElFTkSuQmCC

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-css/navbar/3328360018-navbar.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 100%; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: "Trebuchet =
MS",Verdana,Arial,Sans-serif; WHITE-SPACE: nowrap
}
A {
	TEXT-DECORATION: none
}
#b-navbar {
	FONT-SIZE: 0.85em; LINE-HEIGHT: 0.85em; BORDER-BOTTOM: #024 1px solid; =
HEIGHT: 29px
}
#b-navbar #b-logo {
	LEFT: 5px; POSITION: absolute; TOP: 0.15em
}
#b-navbar #b-logo #navbar-logo {
	WIDTH: 24px; HEIGHT: 24px
}
#b-navbar #b-logo SPAN {
	DISPLAY: block; LEFT: -9000px; POSITION: absolute
}
#b-search {
	PADDING-RIGHT: 1em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 3px; MARGIN: =
0px 0px 0px 34px; PADDING-TOP: 4px
}
#b-search TD {
	VERTICAL-ALIGN: middle
}
#b-query {
	MARGIN: 0px 0.5em 0px 0px
}
.btn {
	PADDING-RIGHT: 0px; BORDER-TOP: 1px solid; PADDING-LEFT: 0px; =
FONT-SIZE: 0.8em; PADDING-BOTTOM: 0px; MARGIN: 0px 0.5em 0px 1px; =
TEXT-TRANSFORM: uppercase; CURSOR: hand; LINE-HEIGHT: 0.85em; =
PADDING-TOP: 0px; BORDER-BOTTOM: 1px solid; WHITE-SPACE: nowrap
}
.btn DIV {
	BORDER-RIGHT: 1px solid; PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; =
PADDING-BOTTOM: 0.21em; MARGIN: 0px -1px; BORDER-LEFT: 1px solid; =
PADDING-TOP: 0.21em; POSITION: relative; HEIGHT: 0.85em
}
.btn DIV IMG {
	LEFT: 0.3em; POSITION: absolute; TOP: 0.2em
}
#bt-flag-body {
	PADDING-LEFT: 1em
}
#bt-unflag-body {
	PADDING-LEFT: 1em
}
#bt-unflag-body {
	DISPLAY: none
}
.flagged #bt-flag-body {
	DISPLAY: none
}
.flagged #bt-unflag-body {
	DISPLAY: block
}
#flagi {
	BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #333 1px =
solid; DISPLAY: none; PADDING-LEFT: 4px; FONT-SIZE: 0.7em; Z-INDEX: 300; =
PADDING-BOTTOM: 4px; BORDER-LEFT: #333 1px solid; COLOR: #000; =
LINE-HEIGHT: 0.8em; PADDING-TOP: 4px; BORDER-BOTTOM: #333 1px solid; =
TOP: 3px; BACKGROUND-COLOR: #ff9
}
#unflagi {
	BORDER-RIGHT: #333 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #333 1px =
solid; DISPLAY: none; PADDING-LEFT: 4px; FONT-SIZE: 0.7em; Z-INDEX: 300; =
PADDING-BOTTOM: 4px; BORDER-LEFT: #333 1px solid; COLOR: #000; =
LINE-HEIGHT: 0.8em; PADDING-TOP: 4px; BORDER-BOTTOM: #333 1px solid; =
TOP: 3px; BACKGROUND-COLOR: #ff9
}
#flagi A {
	COLOR: #3366cc; TEXT-DECORATION: underline
}
#unflagi A {
	COLOR: #3366cc; TEXT-DECORATION: underline
}
.b-mobile {
	DISPLAY: none
}
#b-sms {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; FONT-SIZE: 100%; PADDING-BOTTOM: =
4px; MARGIN: 0px 0px 0px 100px; LINE-HEIGHT: 1em; PADDING-TOP: 4px; =
TEXT-ALIGN: left
}
#b-sms A {
	LINE-HEIGHT: 1em; MARGIN-RIGHT: 0.5em
}
#b-sms A:hover {
	TEXT-DECORATION: underline
}

@media Handheld   =20
{
BODY .b-mobile {
	DISPLAY: block
}
BODY #b-search {
	DISPLAY: none
}
BODY #flagi {
	DISPLAY: none
}
BODY #unflagi {
	DISPLAY: none
}
BODY #b-navbar #b-logo SPAN {
	DISPLAY: none
}

}

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-css/navbar/1297325411-1.css

BODY {
	COLOR: #fff
}
A {
	COLOR: #9cf
}
.btn DIV {
	COLOR: #9cf
}
A:hover {
	COLOR: #fff
}
#navbar-logo {
	BACKGROUND-IMAGE: url(../../img/navbar/1/logobar.png)
}
#b-navbar {
	BORDER-BOTTOM: #024 1px solid; BACKGROUND-COLOR: #036
}
#b-search {
	BACKGROUND: url(../../img/navbar/1/corner.gif) #147 no-repeat left =
bottom
}
#b-query {
	BORDER-RIGHT: #47a 1px solid; BORDER-TOP: #47a 1px solid; BORDER-LEFT: =
#47a 1px solid; BORDER-BOTTOM: #47a 1px solid
}
.btn {
	BORDER-LEFT-COLOR: #47a; BORDER-BOTTOM-COLOR: #47a; BORDER-TOP-COLOR: =
#47a; BORDER-RIGHT-COLOR: #47a
}
.btn DIV {
	BORDER-LEFT-COLOR: #47a; BORDER-BOTTOM-COLOR: #47a; BORDER-TOP-COLOR: =
#47a; BORDER-RIGHT-COLOR: #47a
}
.btn DIV:hover {
	BACKGROUND-COLOR: #47a
}

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-js/3625575137-cookies.common.js

// Copyright 2005, Google Inc.=0A=
// =0A=
// Operations on cookies that are common across our pages.=0A=
//=0A=
// Original Author: Pal Takacsi-Nagy (pal@google.com)=0A=
=0A=
=0A=
/**=0A=
 * Sets a Cookie with the given name and value.=0A=
 *=0A=
 * name       Name of the cookie=0A=
 * value      Value of the cookie=0A=
 * [expires]  Expiration date of the cookie (default: end of current =
session)=0A=
 * [path]     Path where the cookie is valid (default: path of calling =
document)=0A=
 * [domain]   Domain where the cookie is valid=0A=
 *              (default: domain of calling document)=0A=
 * [secure]   Boolean value indicating if the cookie transmission =
requires a=0A=
 *              secure transmission=0A=
 */=0A=
function setCookie(name, value, domain, expires, path, secure) {=0A=
    document.cookie =3D name + "=3D" + escape(value) +=0A=
        ((expires) ? "; expires=3D" + expires.toGMTString() : "") +=0A=
        ((path) ? "; path=3D" + path : "") +=0A=
        ((domain) ? "; domain=3D" + domain : "") +=0A=
        ((secure) ? "; secure" : "");=0A=
}=0A=
=0A=
/**=0A=
 * Gets the value of the specified cookie.=0A=
 *=0A=
 * name  Name of the desired cookie.=0A=
 *=0A=
 * Returns a string containing value of specified cookie,=0A=
 *   or null if cookie does not exist.=0A=
 */=0A=
function getCookie(name) {=0A=
    var dc =3D document.cookie;=0A=
    var prefix =3D name + "=3D";=0A=
    var begin =3D dc.indexOf("; " + prefix);=0A=
=0A=
    if (begin =3D=3D -1) {=0A=
        begin =3D dc.indexOf(prefix);=0A=
        if (begin !=3D 0) return null;=0A=
    } else {=0A=
        begin +=3D 2;=0A=
    }=0A=
=0A=
    var end =3D document.cookie.indexOf(";", begin);=0A=
=0A=
    if (end =3D=3D -1) {=0A=
        end =3D dc.length;=0A=
    }=0A=
=0A=
    return unescape(dc.substring(begin + prefix.length, end));=0A=
}=0A=

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-app/scripts/1019856700-common.js

// Copied from .../google3/javascript/common.js=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// This file contains common utilities and basic javascript =
infrastructure.=0A=
//=0A=
// Notes:=0A=
// * Press 'D' to toggle debug mode.=0A=
//=0A=
// Functions:=0A=
//=0A=
// - Assertions=0A=
// DEPRECATED: Use assert.js=0A=
// AssertTrue(): assert an expression. Throws an exception if false.=0A=
// Fail(): Throws an exception. (Mark block of code that should be =
unreachable)=0A=
// AssertEquals(): assert that two values are equal.=0A=
// AssertNumArgs(): assert number of arguments for the function=0A=
// AssertType(): assert that a value has a particular type=0A=
//=0A=
// - Cookies=0A=
// SetCookie(): Sets a cookie.=0A=
// ExpireCookie(): Expires a cookie.=0A=
// GetCookie(): Gets a cookie value.=0A=
//=0A=
// - Dynamic HTML/DOM utilities=0A=
// MaybeGetElement(): get an element by its id=0A=
// GetElement(): get an element by its id=0A=
// GetParentNode(): Get the parent of an element=0A=
// GetAttribute(): Get attribute value of a DOM node=0A=
// SetInnerHTML(): set the inner HTML of a node=0A=
// GetInnerHTML(): get the inner HTML of a node=0A=
// ClearInnerHTML(): clear the inner HTML of a node=0A=
// SetCssStyle(): Sets a CSS property of a node.=0A=
// GetStyleProperty(): Get CSS property from a style attribute string=0A=
// ShowElement(): Show/hide element by setting the "display" css =
property.=0A=
// ShowBlockElement(): Show/hide block element=0A=
// SetButtonText(): Set the text of a button element.=0A=
// AppendNewElement(): Create and append a html element to a parent node.=0A=
// CreateDIV(): Create a DIV element and append to the document.=0A=
// CreateIFRAME(): Create an IFRAME and append to the document.=0A=
// HasClass(): check if element has a given class=0A=
// AddClass(): add a class to an element=0A=
// RemoveClass(): remove a class from an element=0A=
//=0A=
// - Window/Screen utiltiies=0A=
// GetPageOffsetLeft(): get the X page offset of an element=0A=
// GetPageOffsetTop(): get the Y page offset of an element=0A=
// GetPageOffset(): get the X and Y page offsets of an element=0A=
// GetPageOffsetRight() : get X page offset of the right side of an =
element=0A=
// GetPageOffsetRight() : get Y page offset of the bottom of an element=0A=
// GetScrollTop(): get the vertical scrolling pos of a window.=0A=
// GetScrollLeft(): get the horizontal scrolling pos of a window=0A=
// IsScrollAtEnd():  check if window scrollbar has reached its maximum =
offset=0A=
// ScrollTo(): scroll window to a position=0A=
// ScrollIntoView(): scroll window so that an element is in view.=0A=
// GetWindowWidth(): get width of a window.=0A=
// GetWindowHeight(): get height of a window=0A=
// GetAvailScreenWidth(): get available screen width=0A=
// GetAvailScreenHeight(): get available screen height=0A=
// GetNiceWindowHeight(): get a nice height for a new browser window.=0A=
// Open{External/Internal}Window(): open a separate window=0A=
// CloseWindow(): close a window=0A=
//=0A=
// - DOM walking utilities=0A=
// AnnotateTerms(): find terms in a node and decorate them with some tag=0A=
// AnnotateText(): find terms in a text node and decorate them with some =
tag=0A=
//=0A=
// - String utilties=0A=
// HtmlEscape(): html escapes a string=0A=
// HtmlUnescape(): remove html-escaping.=0A=
// QuoteEscape(): escape " quotes.=0A=
// CollapseWhitespace(): collapse multiple whitespace into one =
whitespace.=0A=
// Trim(): trim whitespace on ends of string=0A=
// IsEmpty(): check if CollapseWhiteSpace(String) =3D=3D ""=0A=
// IsLetterOrDigit(): check if a character is a letter or a digit=0A=
// ConvertEOLToLF(): normalize the new-lines of a string.=0A=
// HtmlEscapeInsertWbrs(): HtmlEscapes and inserts <wbr>s (word break =
tags)=0A=
//   after every n non-space chars and/or after or before certain =
special chars=0A=
//=0A=
// - TextArea utilities=0A=
// GetCursorPos(): finds the cursor position of a textfield=0A=
// SetCursorPos(): sets the cursor position in a textfield=0A=
//=0A=
// - Array utilities=0A=
// FindInArray(): do a linear search to find an element value.=0A=
// DeleteArrayElement(): return a new array with a specific value =
removed.=0A=
// CloneObject(): clone an object, copying its values recursively.=0A=
// CloneEvent(): clone an event; cannot use CloneObject because it=0A=
//               suffers from infinite recursion=0A=
//=0A=
// - Formatting utilities=0A=
// PrintArray(): used to print/generate HTML by combining static text=0A=
// and dynamic strings.=0A=
// ImageHtml(): create html for an img tag=0A=
// FormatJSLink(): formats a link that invokes js code when clicked.=0A=
// MakeId3(): formats an id that has two id numbers, eg, foo_3_7=0A=
//=0A=
// - Miscellaneous=0A=
// IsDefined(): returns true if argument is not undefined=0A=
//-----------------------------------------------------------------------=
-=0A=
=0A=
// browser detection=0A=
var agent =3D navigator.userAgent.toLowerCase();=0A=
var is_ie =3D (agent.indexOf('msie') !=3D -1);=0A=
//var is_ie5 =3D (agent.indexOf('msie 5') !=3D -1 && document.all);=0A=
var is_konqueror =3D (agent.indexOf('konqueror') !=3D -1);=0A=
var is_safari =3D (agent.indexOf('safari') !=3D -1) || is_konqueror;=0A=
var is_nav =3D !is_ie && !is_safari && (agent.indexOf('mozilla') !=3D =
-1);=0A=
var is_win =3D (agent.indexOf('win') !=3D -1);=0A=
delete agent;=0A=
=0A=
=0A=
var BACKSPACE_KEYCODE =3D 8;=0A=
var COMMA_KEYCODE =3D 188;                // ',' key=0A=
var DEBUG_KEYCODE =3D 68;                 // 'D' key=0A=
var DELETE_KEYCODE =3D 46;=0A=
var DOWN_KEYCODE =3D 40;                  // DOWN arrow key=0A=
var ENTER_KEYCODE =3D 13;                 // ENTER key=0A=
var ESC_KEYCODE =3D 27;                   // ESC key=0A=
var LEFT_KEYCODE =3D 37;                  // LEFT arrow key=0A=
var RIGHT_KEYCODE =3D 39;                 // RIGHT arrow key=0A=
var SPACE_KEYCODE =3D 32;                 // space bar=0A=
var TAB_KEYCODE =3D 9;                    // TAB key=0A=
var UP_KEYCODE =3D 38;                    // UP arrow key=0A=
var SHIFT_KEYCODE =3D 16;=0A=
=0A=
// This is a "constant" but has different values depending on the browser=0A=
var semicolon_keycode =3D (is_ie ? 186 : 59);=0A=
=0A=
var MAX_EMAIL_ADDRESS_LENGTH =3D 320;     // 64 + '@' + 255=0A=
var MAX_SIGNATURE_LENGTH =3D 1000;        // 1000 chars of maximum =
signature=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Assertions=0A=
// DEPRECATED: Use assert.js=0A=
//-----------------------------------------------------------------------=
-=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 */=0A=
function raise(msg) {=0A=
  if (typeof Error !=3D 'undefined') {=0A=
    throw new Error(msg || 'Assertion Failed');=0A=
  } else {=0A=
    throw (msg);=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Fail() is useful for marking logic paths that should=0A=
 * not be reached. For example, if you have a class that uses=0A=
 * ints for enums:=0A=
 *=0A=
 * MyClass.ENUM_FOO =3D 1;=0A=
 * MyClass.ENUM_BAR =3D 2;=0A=
 * MyClass.ENUM_BAZ =3D 3;=0A=
 *=0A=
 * And a switch statement elsewhere in your code that=0A=
 * has cases for each of these enums, then you can=0A=
 * "protect" your code as follows:=0A=
 *=0A=
 * switch(type) {=0A=
 *   case MyClass.ENUM_FOO: doFooThing(); break;=0A=
 *   case MyClass.ENUM_BAR: doBarThing(); break;=0A=
 *   case MyClass.ENUM_BAZ: doBazThing(); break;=0A=
 *   default:=0A=
 *     Fail("No enum in MyClass with value: " + type);=0A=
 * }=0A=
 *=0A=
 * This way, if someone introduces a new value for this enum=0A=
 * without noticing this switch statement, then the code will=0A=
 * fail if the logic allows it to reach the switch with the=0A=
 * new value, alerting the developer that he should add a=0A=
 * case to the switch to handle the new value he has introduced.=0A=
 *=0A=
 * @param {string} opt_msg to display for failure=0A=
 *                 DEFAULT: "Assertion failed"=0A=
 */=0A=
function Fail(opt_msg) {=0A=
  if (opt_msg =3D=3D=3D undefined) opt_msg =3D 'Assertion failed';=0A=
  if (IsDefined(DumpError)) DumpError(opt_msg + '\n');=0A=
  raise(opt_msg);=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that an expression is true (non-zero and non-null).=0A=
 *=0A=
 * Note that it is critical not to pass logic=0A=
 * with side-effects as the expression for AssertTrue=0A=
 * because if the assertions are removed by the=0A=
 * JSCompiler, then the expression will be removed=0A=
 * as well, in which case the side-effects will=0A=
 * be lost. So instead of this:=0A=
 *=0A=
 *  AssertTrue( criticalComputation() );=0A=
 *=0A=
 * Do this:=0A=
 *=0A=
 *  var result =3D criticalComputation();=0A=
 *  AssertTrue(result);=0A=
 *=0A=
 * @param {anything} expression to evaluate=0A=
 * @param {string}   opt_msg to display if the assertion fails=0A=
 *=0A=
 */=0A=
function AssertTrue(expression, opt_msg) {=0A=
  if (!expression) {=0A=
    if (opt_msg =3D=3D=3D undefined) opt_msg =3D 'Assertion failed';=0A=
    Fail(opt_msg);=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that two values are the same.=0A=
 *=0A=
 * @param {anything} val1=0A=
 * @param {anything} val2=0A=
 * @param {string} opt_msg to display if the assertion fails=0A=
 */=0A=
function AssertEquals(val1, val2, opt_msg) {=0A=
  if (val1 !=3D val2) {=0A=
    if (opt_msg =3D=3D=3D undefined) {=0A=
      opt_msg =3D "AssertEquals failed: <" + val1 + "> !=3D <" + val2 + =
">";=0A=
    }=0A=
    Fail(opt_msg);=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that a value is of the provided type.=0A=
 *=0A=
 *   AssertType(6, Number);=0A=
 *   AssertType("ijk", String);=0A=
 *   AssertType([], Array);=0A=
 *   AssertType({}, Object);=0A=
 *   AssertType(ICAL_Date.now(), ICAL_Date);=0A=
 *=0A=
 * @param {anything} value=0A=
 * @param {constructor function} type=0A=
 * @param {string} opt_msg to display if the assertion fails=0A=
 */=0A=
function AssertType(value, type, opt_msg) {=0A=
  // for backwards compatability only=0A=
  if (typeof value =3D=3D type) return;=0A=
=0A=
  if (value || value =3D=3D "") {=0A=
    try {=0A=
      if (type =3D=3D AssertTypeMap[typeof value] || value instanceof =
type) return;=0A=
    } catch (e) { /* failure, type was an illegal argument to instanceof =
*/ }=0A=
  }=0A=
  if (opt_msg =3D=3D=3D undefined) {=0A=
    if (typeof type =3D=3D 'function') {=0A=
      var match =3D type.toString().match(/^\s*function\s+([^\s\{]+)/);=0A=
      if (match) type =3D match[1];=0A=
    }=0A=
    opt_msg =3D "AssertType failed: <" + value + "> not typeof "+ type;=0A=
  }=0A=
  Fail(opt_msg);=0A=
}=0A=
=0A=
var AssertTypeMap =3D {=0A=
  'string'  : String,=0A=
  'number'  : Number,=0A=
  'boolean' : Boolean=0A=
};=0A=
=0A=
/**=0A=
 * DEPRECATED: Use assert.js=0A=
 *=0A=
 * Asserts that the number of arguments to a=0A=
 * function is num. For example:=0A=
 *=0A=
 * function myFunc(one, two, three) [=0A=
 *   AssertNumArgs(3);=0A=
 *   ...=0A=
 * }=0A=
 *=0A=
 * myFunc(1, 2); // assertion fails!=0A=
 *=0A=
 * Note that AssertNumArgs does not take the function=0A=
 * as an argument; it is simply used in the context=0A=
 * of the function.=0A=
 *=0A=
 * @param {int} number of arguments expected=0A=
 * @param {string} opt_msg to display if the assertion fails=0A=
 */=0A=
function AssertNumArgs(num, opt_msg) {=0A=
  var caller =3D AssertNumArgs.caller;  // This is not supported in =
safari 1.0=0A=
  if (caller && caller.arguments.length !=3D num) {=0A=
    if (opt_msg =3D=3D=3D undefined) {=0A=
      opt_msg =3D caller.name + ' expected ' + num + ' arguments '=0A=
                  + ' but received ' + caller.arguments.length;=0A=
    }=0A=
    Fail(opt_msg);=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Cookies=0A=
//-----------------------------------------------------------------------=
-=0A=
var ILLEGAL_COOKIE_CHARS_RE =3D /[\s;]/=0A=
/**=0A=
 * Sets a cookie.=0A=
 * The max_age can be -1 to set a session cookie. To expire cookies, use=0A=
 * ExpireCookie() instead.=0A=
 *=0A=
 * @param name The cookie name.=0A=
 * @param value The cookie value.=0A=
 * @param opt_max_age The max age in seconds (from now). Use -1 to set a=0A=
 *   session cookie. If not provided, the default is -1 (i.e. set a =
session=0A=
 *   cookie).=0A=
 * @param opt_path The path of the cookie, or null to not specify a path=0A=
 *   attribute (browser will use the full request path). If not =
provided, the=0A=
 *   default is '/' (i.e. path=3D/).=0A=
 * @param opt_domain The domain of the cookie, or null to not specify a =
domain=0A=
 *   attribute (brower will use the full request host name). If not =
provided,=0A=
 *   the default is null (i.e. let browser use full request host name).=0A=
 * @return Void.=0A=
 */=0A=
function SetCookie(name, value, opt_max_age, opt_path, opt_domain) {=0A=
=0A=
  value =3D '' + value;=0A=
  AssertTrue((typeof name =3D=3D 'string' &&=0A=
              typeof value =3D=3D 'string' &&=0A=
              !name.match(ILLEGAL_COOKIE_CHARS_RE) &&=0A=
              !value.match(ILLEGAL_COOKIE_CHARS_RE)),=0A=
             'trying to set an invalid cookie');=0A=
=0A=
  if (!IsDefined(opt_max_age)) opt_max_age =3D -1;=0A=
  if (!IsDefined(opt_path)) opt_path =3D '/';=0A=
  if (!IsDefined(opt_domain)) opt_domain =3D null;=0A=
=0A=
  var domain_str =3D (opt_domain =3D=3D null) ? '' : ';domain=3D' + =
opt_domain;=0A=
  var path_str =3D (opt_path =3D=3D null) ? '' : ';path=3D' + opt_path;=0A=
=0A=
  var expires_str;=0A=
=0A=
  // Case 1: Set a session cookie.=0A=
  if (opt_max_age < 0) {=0A=
    expires_str =3D '';=0A=
=0A=
  // Case 2: Expire the cookie.=0A=
  // Note: We don't tell people about this option in the function doc =
because=0A=
  // we prefer people to use ExpireCookie() to expire cookies.=0A=
  } else if (opt_max_age =3D=3D 0) {=0A=
    // Note: Don't use Jan 1, 1970 for date because NS 4.76 will try to =
convert=0A=
    // it to local time, and if the local time is before Jan 1, 1970, =
then the=0A=
    // browser will ignore the Expires attribute altogether.=0A=
    var pastDate =3D new Date(1970, 1 /*Feb*/, 1);  // Feb 1, 1970=0A=
    expires_str =3D ';expires=3D' + pastDate.toUTCString();=0A=
=0A=
  // Case 3: Set a persistent cookie.=0A=
  } else {=0A=
    var futureDate =3D new Date(Now() + opt_max_age * 1000);=0A=
    expires_str =3D ';expires=3D' + futureDate.toUTCString();=0A=
  }=0A=
=0A=
  document.cookie =3D name + '=3D' + value + domain_str + path_str + =
expires_str;=0A=
}=0A=
=0A=
var EXPIRED_COOKIE_VALUE =3D 'EXPIRED';=0A=
=0A=
/**=0A=
 * Expires a cookie.=0A=
 *=0A=
 * @param name The cookie name.=0A=
 * @param opt_path The path of the cookie, or null to expire a cookie =
set at=0A=
 *   the full request path. If not provided, the default is '/' (i.e. =
path=3D/).=0A=
 * @param opt_domain The domain of the cookie, or null to expire a =
cookie set=0A=
 *   at the full request host name. If not provided, the default is null =
(i.e.=0A=
 *   cookie at full request host name).=0A=
 * @return Void.=0A=
 */=0A=
function ExpireCookie(name, opt_path, opt_domain) {=0A=
  SetCookie(name, EXPIRED_COOKIE_VALUE, 0, opt_path, opt_domain);=0A=
}=0A=
=0A=
/** Returns the value for the first cookie with the given name=0A=
 * @param name : string=0A=
 * @return a string or the empty string if no cookie found.=0A=
 */=0A=
function GetCookie(name) {=0A=
  var nameeq =3D name + "=3D";=0A=
  var cookie =3D String(document.cookie);=0A=
  for (var pos =3D -1; (pos =3D cookie.indexOf(nameeq, pos + 1)) >=3D =
0;) {=0A=
    var i =3D pos;=0A=
    // walk back along string skipping whitespace and looking for a ; =
before=0A=
    // the name to make sure that we don't match cookies whose name =
contains=0A=
    // the given name as a suffix.=0A=
    while (--i >=3D 0) {=0A=
      var ch =3D cookie.charAt(i);=0A=
      if (ch =3D=3D ';') {=0A=
        i =3D -1;  // indicate success=0A=
        break;=0A=
      } else if (' \t'.indexOf(ch) < 0) {=0A=
        break;=0A=
      }=0A=
    }=0A=
    if (-1 =3D=3D=3D i) {  // first cookie in the string or we found a ;=0A=
      var end =3D cookie.indexOf(';', pos);=0A=
      if (end < 0) { end =3D cookie.length; }=0A=
      return cookie.substring(pos + nameeq.length, end);=0A=
    }=0A=
  }=0A=
  return "";=0A=
}=0A=
=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Time=0A=
//-----------------------------------------------------------------------=
-=0A=
function Now() {=0A=
  return (new Date()).getTime();=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Dynamic HTML/DOM utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// Gets a element by its id, may return null=0A=
function MaybeGetElement(win, id) {=0A=
  return win.document.getElementById(id);=0A=
}=0A=
=0A=
// Same as MaybeGetElement except that it throws an exception if it's =
null=0A=
function GetElement(win, id) {=0A=
  var el =3D win.document.getElementById(id);=0A=
  if (!el) {=0A=
    DumpError("Element " + id + " not found.");=0A=
  }=0A=
  return el;=0A=
}=0A=
=0A=
// Gets elements by its id/name=0A=
// IE treats getElementsByName as searching over ids, while Moz use =
names.=0A=
// so tags must have both id and name as the same string=0A=
function GetElements(win, id) {=0A=
  return win.document.getElementsByName(id);=0A=
}=0A=
=0A=
// Gets the parent of a html element.=0A=
function GetParentNode(n) {=0A=
  try {=0A=
    return n.parentNode;=0A=
  } catch (e) {=0A=
    // n.parentNode may throw a permission-denied exception on mozilla=0A=
    // (e.g. on text element), ignore this exception.=0A=
    return n;=0A=
  }=0A=
}=0A=
=0A=
function IsDescendant(parent, child) {=0A=
  do {=0A=
    if (parent =3D=3D=3D child) return true;=0A=
    child =3D GetParentNode(child);=0A=
  } while (child && child !=3D=3D document.body);=0A=
  return false;=0A=
}=0A=
=0A=
// Get attribute value of a DOM node=0A=
function GetAttribute(node, attribute) {=0A=
  if (!node.getAttribute) {=0A=
    return null;=0A=
  }=0A=
  var attr =3D node.getAttribute(attribute);=0A=
  if (is_ie && attribute =3D=3D "style") {=0A=
    return attr.value;=0A=
  } else {=0A=
    return attr;=0A=
  }=0A=
}=0A=
=0A=
// Sets inner html of a html element=0A=
function SetInnerHTML(win, id, html) {=0A=
  try {=0A=
    GetElement(win, id).innerHTML =3D html;=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
  }=0A=
}=0A=
=0A=
// Gets inner-html of a html element=0A=
function GetInnerHTML(win, id) {=0A=
  try {=0A=
    return GetElement(win, id).innerHTML;=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
    return "";=0A=
  }=0A=
}=0A=
=0A=
// Clears inner html of a html element=0A=
function ClearInnerHTML(win, id) {=0A=
  try {=0A=
    GetElement(win, id).innerHTML =3D "";=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
  }=0A=
}=0A=
=0A=
// Sets a CSS style of an element=0A=
function SetCssStyle(win, id, name, value) {=0A=
  try {=0A=
    var elem =3D GetElement(win, id);=0A=
    elem.style[name] =3D value;=0A=
  } catch (ex) {=0A=
    DumpException(ex);=0A=
  }=0A=
}=0A=
=0A=
// Get CSS property from a style attribute string=0A=
function GetStyleProperty(style, name) {=0A=
  var i =3D style.indexOf(name);=0A=
  if (i !=3D -1) {=0A=
    var j =3D style.indexOf(";", i);=0A=
    if (j =3D=3D -1) {=0A=
      j =3D style.length;=0A=
    }=0A=
    // the +1 below is for the colon following the attribute name=0A=
    return CollapseWhitespace(style.substring(i + name.length + 1, j));=0A=
  }=0A=
  return null;=0A=
}=0A=
=0A=
// Show/hide an element.=0A=
function ShowElement(el, show) {=0A=
  el.style.display =3D show ? "" : "none";=0A=
}=0A=
=0A=
// Show/hide a block element.=0A=
// ShowElement() doesn't work if object has an initial class with =
display:none=0A=
function ShowBlockElement(el, show) {=0A=
  el.style.display =3D show ? "block" : "none";=0A=
}=0A=
=0A=
// Show/hide an inline element.=0A=
// ShowElement() doesn't work when an element starts off display:none.=0A=
function ShowInlineElement(el, show) {=0A=
  el.style.display =3D show ? "inline" : "none";=0A=
}=0A=
=0A=
// Set the text of a button. This is to get around a bug in mozilla,=0A=
// where we can't set the text of a button by setting innerHTML.=0A=
function SetButtonText(button, text) {=0A=
  button.childNodes[0].nodeValue =3D text;=0A=
}=0A=
=0A=
// Append a new HTML element to a HTML node.=0A=
function AppendNewElement(win, parent, tag) {=0A=
  var e =3D win.document.createElement(tag);=0A=
  parent.appendChild(e);=0A=
  return e;=0A=
}=0A=
=0A=
// Finds the child with the given ID, or null if there is node.=0A=
// This does not search the children's children.=0A=
function FindChildWithID(parent, id) {=0A=
  var el;=0A=
  for (el =3D parent.firstChild; el && el.id !=3D id; el =3D =
el.nextSibling) {=0A=
    // skip=0A=
  }=0A=
  return el;=0A=
}=0A=
=0A=
// Adds a disabled option to the given menu=0A=
function AddMenuDisabledOption(win, menu, html) {=0A=
  var op =3D AppendNewElement(win, menu, 'OPTION');=0A=
  op.disabled =3D true;=0A=
  op.innerHTML =3D html;=0A=
=0A=
  return op;=0A=
}=0A=
=0A=
// Adds a option to the given menu=0A=
function AddMenuOption(win, menu, value, html) {=0A=
  var op =3D AppendNewElement(win, menu, 'OPTION');=0A=
  op.value =3D value;=0A=
  op.innerHTML =3D html;=0A=
=0A=
  return op;=0A=
}=0A=
=0A=
// Create a new DIV (append it to the end of the document)=0A=
function CreateDIV(win, id) {=0A=
  var div =3D MaybeGetElement(win, id);=0A=
  if (!div) {=0A=
    div =3D AppendNewElement(win, win.document.body, "div");=0A=
    div.id =3D id;=0A=
  }=0A=
  return div;=0A=
}=0A=
=0A=
// Create a new IFRAME (append it to the end of the document)=0A=
function CreateIFRAME(win, id, url) {=0A=
  var iframe =3D MaybeGetElement(win, id);=0A=
  if (!iframe) {=0A=
    // We cannot create an IFRAME directly (IE doesn't allow it), so we=0A=
    // create a DIV and then insert an IFRAME.=0A=
    // We also give the IFRAME a name (same as id)=0A=
    var div =3D AppendNewElement(win, win.document.body, "div");=0A=
    div.innerHTML =3D "<iframe id=3D" + id + " name=3D" + id +=0A=
             " src=3D" + url + "></iframe>";=0A=
    iframe =3D GetElement(win, id);=0A=
  }=0A=
  return iframe;=0A=
}=0A=
=0A=
// Create a new TR containing the given td's=0A=
function Tr(win, tds) {=0A=
  var tr =3D win.document.createElement("TR");=0A=
  for (var i =3D 0; i < tds.length; i++) {=0A=
    tr.appendChild(tds[i]);=0A=
  }=0A=
  return tr;=0A=
}=0A=
=0A=
// Create a new TD, with an optional colspan=0A=
function Td(win, opt_colspan) {=0A=
  var td =3D win.document.createElement("TD");=0A=
  if (opt_colspan) {=0A=
    td.colSpan =3D opt_colspan;=0A=
  }=0A=
  return td;=0A=
}=0A=
=0A=
=0A=
// Check if an element has a given class=0A=
function HasClass(el, cl) {=0A=
  if (el =3D=3D null || el.className =3D=3D null) return false;=0A=
  var classes =3D el.className.split(" ");=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] =3D=3D cl) {=0A=
      return true;=0A=
    }=0A=
  }=0A=
  return false;=0A=
}=0A=
=0A=
// Add a class to element=0A=
function AddClass(el, cl) {=0A=
  if (HasClass(el, cl)) return;=0A=
  el.className +=3D " " + cl;=0A=
}=0A=
=0A=
// Remove a class from an element=0A=
function RemoveClass(el, cl) {=0A=
  if (el.className =3D=3D null) return;=0A=
  var classes =3D el.className.split(" ");=0A=
  var result =3D [];=0A=
  var changed =3D false;=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] !=3D cl) {=0A=
      if (classes[i]) { result.push(classes[i]); }=0A=
    } else {=0A=
      changed =3D true;=0A=
    }=0A=
  }=0A=
  if (changed) { el.className =3D result.join(" "); }=0A=
}=0A=
=0A=
// Performs an in-order traversal of the tree rooted at the given node=0A=
// (excluding the root node) and returns an array of nodes that match the=0A=
// given selector. The selector must implement the method:=0A=
//=0A=
// boolean select(node);=0A=
//=0A=
// This method is a generalization of the DOM method =
"getElementsByTagName"=0A=
//=0A=
function GetElementsBySelector(root, selector) {=0A=
  var nodes =3D [];=0A=
  for (var child =3D root.firstChild; child; child =3D =
child.nextSibling) {=0A=
    AddElementBySelector_(child, selector, nodes);=0A=
  }=0A=
  return nodes;=0A=
}=0A=
=0A=
// Recursive helper for GetElemnetsBySelector()=0A=
function AddElementBySelector_(root, selector, nodes) {=0A=
  // First test the parent=0A=
  if (selector.select(root)) {=0A=
    nodes.push(root);=0A=
  }=0A=
=0A=
  // Then recurse through the children=0A=
  for (var child =3D root.firstChild; child; child =3D =
child.nextSibling) {=0A=
    AddElementBySelector_(child, selector, nodes);=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Window/screen utilities=0A=
// TODO: these should be renamed (e.g. GetWindowWidth to =
GetWindowInnerWidth=0A=
// and moved to geom.js)=0A=
//-----------------------------------------------------------------------=
-=0A=
// Get page offset of an element=0A=
function GetPageOffsetLeft(el) {=0A=
  var x =3D el.offsetLeft;=0A=
  if (el.offsetParent !=3D null)=0A=
    x +=3D GetPageOffsetLeft(el.offsetParent);=0A=
  return x;=0A=
}=0A=
=0A=
// Get page offset of an element=0A=
function GetPageOffsetTop(el) {=0A=
  var y =3D el.offsetTop;=0A=
  if (el.offsetParent !=3D null)=0A=
    y +=3D GetPageOffsetTop(el.offsetParent);=0A=
  return y;=0A=
}=0A=
=0A=
// Get page offset of an element=0A=
function GetPageOffset(el) {=0A=
  var x =3D el.offsetLeft;=0A=
  var y =3D el.offsetTop;=0A=
  if (el.offsetParent !=3D null) {=0A=
    var pos =3D GetPageOffset(el.offsetParent);=0A=
    x +=3D pos.x;=0A=
    y +=3D pos.y;=0A=
  }=0A=
  return {x: x, y: y};=0A=
}=0A=
=0A=
function GetPageOffsetRight(el) {=0A=
  return GetPageOffsetLeft(el) + el.offsetWidth;=0A=
}=0A=
=0A=
function GetPageOffsetBottom(el) {=0A=
  return GetPageOffsetTop(el) + el.offsetHeight;=0A=
}=0A=
=0A=
// Get the y position scroll offset.=0A=
function GetScrollTop(win) {=0A=
  // all except Explorer=0A=
  if ("pageYOffset" in win) {=0A=
    return win.pageYOffset;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "scrollTop" in win.document.documentElement) {=0A=
    return win.document.documentElement.scrollTop;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("scrollTop" in win.document.body) {=0A=
    return win.document.body.scrollTop;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
// Get the x position scroll offset.=0A=
function GetScrollLeft(win) {=0A=
  // all except Explorer=0A=
  if ("pageXOffset" in win) {=0A=
    return win.pageXOffset;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "scrollLeft" in win.document.documentElement) {=0A=
    return win.document.documentElement.scrollLeft;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("scrollLeft" in win.document.body) {=0A=
    return win.document.body.scrollLeft;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
/**=0A=
 * Checks if window scrollbar has reached its maximum offset=0A=
 *=0A=
 * @param win a window object=0A=
 * @param opt_isHoriz true if horizontal bar, false if vertical=0A=
 */=0A=
function IsScrollAtEnd(win, opt_isHoriz) {=0A=
  var total =3D=0A=
    (opt_isHoriz) ? document.body.offsetWidth : =
document.body.offsetHeight;=0A=
  var inner =3D=0A=
    (opt_isHoriz) ? GetWindowWidth(win) : GetWindowHeight(win);=0A=
  var offset =3D=0A=
    (opt_isHoriz) ? GetScrollLeft(win) : GetScrollTop(win);=0A=
=0A=
  return (inner + offset >=3D total || total < inner);=0A=
}=0A=
=0A=
// Scroll window to pos=0A=
// position: 0 =3D top, 0.5 =3D middle, 1 =3D bottom=0A=
function ScrollTo(win, el, position) {=0A=
  var y =3D GetPageOffsetTop(el);=0A=
  y -=3D GetWindowHeight(win) * position;=0A=
  win.scrollTo(0, y);=0A=
}=0A=
=0A=
// Scroll so that as far as possible the entire element is in view.=0A=
var ALIGN_BOTTOM =3D 'b';=0A=
var ALIGN_MIDDLE =3D 'm';=0A=
var ALIGN_TOP =3D 't';=0A=
function ScrollIntoView(win, el, alignment) {=0A=
  var el_top =3D GetPageOffsetTop(el);=0A=
  var el_bottom =3D el_top + el.offsetHeight;=0A=
  var win_top =3D GetScrollTop(win);=0A=
  var win_height =3D GetWindowHeight(win);=0A=
  var win_bottom =3D win_top + win_height;=0A=
=0A=
  // Out of view?=0A=
  if (el_top < win_top ||=0A=
      el_bottom > win_bottom) {=0A=
=0A=
    var scrollto_y;=0A=
    if (alignment =3D=3D ALIGN_BOTTOM) {=0A=
      scrollto_y =3D el_bottom - win_height + 5;=0A=
    } else if (alignment =3D=3D ALIGN_MIDDLE) {=0A=
      scrollto_y =3D (el_top + el_bottom) / 2 - win_height/2;=0A=
    } else {=0A=
      scrollto_y =3D el_top - 5;        // ALIGN_TOP=0A=
    }=0A=
=0A=
    Debug("Scrolling to " + scrollto_y);=0A=
    win.scrollTo(0, scrollto_y);=0A=
  }=0A=
}=0A=
=0A=
function IsElementVisible(win, id) {=0A=
  var el =3D MaybeGetElement(win, id);=0A=
  if (el =3D=3D null) {=0A=
    return false;=0A=
  }=0A=
  var el_top =3D GetPageOffsetTop(el);=0A=
  var el_bottom =3D el_top + el.offsetHeight;=0A=
  var win_top =3D GetScrollTop(win);=0A=
  var win_bottom =3D win_top + GetWindowHeight(win);=0A=
  if (el_top >=3D win_top && el_bottom <=3D win_bottom) {=0A=
    return true;=0A=
  }=0A=
  return false;=0A=
}=0A=
=0A=
function GetWindowWidth(win) {=0A=
  // all except Explorer=0A=
  if ("innerWidth" in win) {=0A=
    return win.innerWidth;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "clientWidth" in win.document.documentElement) {=0A=
    return win.document.documentElement.clientWidth;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("clientWidth" in win.document.body) {=0A=
    return win.document.body.clientWidth;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
function GetWindowHeight(win) {=0A=
  // all except Explorer=0A=
  if ("innerHeight" in win) {=0A=
    return win.innerHeight;=0A=
  }=0A=
  // Explorer 6 Strict Mode=0A=
  else if ("documentElement" in win.document &&=0A=
           "clientHeight" in win.document.documentElement) {=0A=
    return win.document.documentElement.clientHeight;=0A=
  }=0A=
  // other Explorers=0A=
  else if ("clientHeight" in win.document.body) {=0A=
    return win.document.body.clientHeight;=0A=
  }=0A=
=0A=
  return 0;=0A=
}=0A=
=0A=
function GetAvailScreenWidth(win) {=0A=
  return win.screen.availWidth;=0A=
}=0A=
=0A=
function GetAvailScreenHeight(win) {=0A=
  return win.screen.availHeight;=0A=
}=0A=
=0A=
// Returns a "nice" window height.=0A=
// Use the screen height. (Or should we use the height of the current =
window?)=0A=
function GetNiceWindowHeight(win) {=0A=
  return Math.floor(0.8 * GetAvailScreenHeight(win));=0A=
}=0A=
=0A=
// Used for horizontally centering a new window of the given width in the=0A=
// available screen. Set the new window's distance from the left of the =
screen=0A=
// equal to this function's return value.=0A=
// Params: width: the width of the new window=0A=
// Returns: the distance from the left edge of the screen for the new =
window to=0A=
//   be horizontally centered=0A=
function GetCenteringLeft(win, width) {=0A=
  return (win.screen.availWidth - width) >> 1;=0A=
}=0A=
=0A=
// Used for vertically centering a new window of the given height in the=0A=
// available screen. Set the new window's distance from the top of the =
screen=0A=
// equal to this function's return value.=0A=
// Params: height: the height of the new window=0A=
// Returns: the distance from the top edge of the screen for the new =
window to=0A=
//   be vertically aligned.=0A=
function GetCenteringTop(win, height) {=0A=
  return (win.screen.availHeight - height) >> 1;=0A=
}=0A=
=0A=
/*=0A=
 * Opens a child popup window that has no browser toolbar/decorations.=0A=
 * (Copied from caribou's common.js library with small modifications.)=0A=
 *=0A=
 * @param url the URL for the new window (Note: this will be =
unique-ified)=0A=
 * @param opt_name the name of the new window=0A=
 * @param opt_width the width of the new window=0A=
 * @param opt_height the height of the new window=0A=
 * @param opt_center if true, the new window is centered in the =
available screen=0A=
 * @param opt_hide_scrollbars if true, the window hides the scrollbars=0A=
 * @param opt_noresize if true, makes window unresizable=0A=
 * @param opt_blocked_msg message warning that the popup has been blocked=0A=
 * @return a reference to the new child window=0A=
 */=0A=
function Popup(url, opt_name, opt_width, opt_height, opt_center,=0A=
               opt_hide_scrollbars, opt_noresize, opt_blocked_msg) {=0A=
  if (!opt_height) {=0A=
    opt_height =3D Math.floor(GetWindowHeight(window.top) * 0.8);=0A=
  }=0A=
  if (!opt_width) {=0A=
    opt_width =3D Math.min(GetAvailScreenWidth(window), opt_height);=0A=
  }=0A=
=0A=
  var features =3D "resizable=3D" + (opt_noresize ? "no" : "yes") + "," +=0A=
                 "scrollbars=3D" + (opt_hide_scrollbars ? "no" : "yes") =
+ "," +=0A=
                 "width=3D" + opt_width + ",height=3D" + opt_height;=0A=
  if (opt_center) {=0A=
    features +=3D ",left=3D" + GetCenteringLeft(window, opt_width) + "," =
+=0A=
                "top=3D" + GetCenteringTop(window, opt_height);=0A=
  }=0A=
  return OpenWindow(window, url, opt_name, features, opt_blocked_msg);=0A=
}=0A=
=0A=
/*=0A=
 * Opens a new window. Returns the new window handle. Tries to open the =
new=0A=
 * window using top.open() first. If that doesn't work, then tries =
win.open().=0A=
 * If that still doesn't work, prints an alert.=0A=
 * (Copied from caribou's common.js library with small modifications.)=0A=
 *=0A=
 * @param win the parent window from which to open the new child window=0A=
 * @param url the URL for the new window (Note: this will be =
unique-ified)=0A=
 * @param opt_name the name of the new window=0A=
 * @param opt_features the properties of the new window=0A=
 * @param opt_blocked_msg message warning that the popup has been blocked=0A=
 * @return a reference to the new child window=0A=
 */=0A=
function OpenWindow(win, url, opt_name, opt_features, opt_blocked_msg) {=0A=
  var newwin =3D OpenWindowHelper(top, url, opt_name, opt_features);=0A=
  if (!newwin || newwin.closed || !newwin.focus) {=0A=
    newwin =3D OpenWindowHelper(win, url, opt_name, opt_features);=0A=
  }=0A=
  if (!newwin || newwin.closed || !newwin.focus) {=0A=
    if (opt_blocked_msg) alert(opt_blocked_msg);=0A=
  } else {=0A=
    // Make sure that the window has the focus=0A=
    newwin.focus();=0A=
  }=0A=
  return newwin;=0A=
}=0A=
=0A=
/*=0A=
 * Helper for OpenWindow().=0A=
 * (Copied from caribou's common.js library with small modifications.)=0A=
 */=0A=
function OpenWindowHelper(win, url, name, features) {=0A=
  var newwin;=0A=
  if (features) {=0A=
    newwin =3D win.open(url, name, features);=0A=
  } else if (name) {=0A=
    newwin =3D win.open(url, name);=0A=
  } else {=0A=
    newwin =3D win.open(url);=0A=
  }=0A=
  return newwin;=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// DOM walking utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
=0A=
function MaybeEscape(str, escape) {=0A=
  return escape ? HtmlEscape(str) : str;=0A=
}=0A=
=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Window data=0A=
//-----------------------------------------------------------------------=
-=0A=
// Gets an array, which can store data for the window. This data=0A=
// is deleted when the window is unloaded.=0A=
var windata =3D [];=0A=
function GetWindowData(win) {=0A=
  var data =3D windata[win.name];=0A=
  if (!data) {=0A=
    windata[win.name] =3D data =3D [];=0A=
  }=0A=
  return data;=0A=
}=0A=
=0A=
// Clear js data for a window.=0A=
function ClearWindowData(win_name) {=0A=
  if (windata[win_name]) {=0A=
    windata[win_name] =3D null;=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// String utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// Do html escaping=0A=
var amp_re_ =3D /&/g;=0A=
var lt_re_ =3D /</g;=0A=
var gt_re_ =3D />/g;=0A=
=0A=
// Convert text to HTML format. For efficiency, we just convert '&', =
'<', '>'=0A=
// characters.=0A=
// Note: Javascript >=3D 1.3 supports lambda expression in the =
replacement=0A=
// argument. But it's slower on IE.=0A=
// Note: we can also implement HtmlEscape by setting the value=0A=
// of a textnode and then reading the 'innerHTML' value, but that=0A=
// that turns out to be slower.=0A=
// Params: str: String to be escaped.=0A=
// Returns: The escaped string.=0A=
function HtmlEscape(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(amp_re_, "&amp;").replace(lt_re_, "&lt;").=0A=
    replace(gt_re_, "&gt;").replace(quote_re_, "&quot;");=0A=
}=0A=
=0A=
/** converts html entities to plain text.  It covers the most common =
named=0A=
 * entities and numeric entities.=0A=
 * It does not cover all named entities -- it covers =
&{lt,gt,amp,quot,nbsp}; but=0A=
 * does not handle some of the more obscure ones like &{ndash,eacute};.=0A=
 */=0A=
function HtmlUnescape(str) {=0A=
  if (!str) return "";=0A=
  return str.=0A=
    replace(/&#(\d+);/g,=0A=
      function (_, n) { return String.fromCharCode(parseInt(n, 10)); }).=0A=
    replace(/&#x([a-f0-9]+);/gi,=0A=
      function (_, n) { return String.fromCharCode(parseInt(n, 16)); }).=0A=
    replace(/&(\w+);/g, function (_, entity) {=0A=
      entity =3D entity.toLowerCase();=0A=
      return entity in HtmlUnescape.unesc ? HtmlUnescape.unesc[entity] : =
'?';=0A=
    });=0A=
}=0A=
HtmlUnescape.unesc =3D { lt: '<', gt: '>', quot: '"', nbsp: ' ', amp: =
'&' };=0A=
=0A=
// Replace multiple spaces with &nbsp; to retain whitespace formatting=0A=
// in addition to escaping '&', '<', and '>'.=0A=
var dbsp_re_ =3D /  /g;=0A=
var ret_re_ =3D /\r/g;=0A=
var nl_re_ =3D /\n/g;=0A=
function HtmlWhitespaceEscape(str) {=0A=
  str =3D HtmlEscape(str);=0A=
  str =3D str.replace(dbsp_re_, "&nbsp;&nbsp;");=0A=
  str =3D str.replace(ret_re_, "");=0A=
  str =3D str.replace(nl_re_, "<br>");=0A=
  return str;=0A=
}=0A=
=0A=
// Escape double quote '"' characters in addition to '&', '<', '>' so =
that a=0A=
// string can be included in an HTML tag attribute value within double =
quotes.=0A=
// Params: str: String to be escaped.=0A=
// Returns: The escaped string.=0A=
var quote_re_ =3D /\"/g;=0A=
function QuoteEscape(str) {=0A=
  return HtmlEscape(str).replace(quote_re_, "&quot;");=0A=
}=0A=
=0A=
var JS_SPECIAL_RE_ =3D /[\'\\\r\n\b\"<>&]/g;=0A=
=0A=
function JSEscOne_(s) {=0A=
  if (!JSEscOne_.js_escs_) {=0A=
    var escapes =3D {};=0A=
    escapes['\\'] =3D '\\\\';=0A=
    escapes['\''] =3D '\\047';=0A=
    escapes['\n'] =3D '\\n';=0A=
    escapes['\r'] =3D '\\r';=0A=
    escapes['\b'] =3D '\\b';=0A=
    escapes['\"'] =3D '\\042';=0A=
    escapes['<'] =3D  '\\074';=0A=
    escapes['>'] =3D  '\\076';=0A=
    escapes['&'] =3D  '\\046';=0A=
=0A=
    JSEscOne_.js_escs_ =3D escapes;=0A=
  }=0A=
=0A=
  return JSEscOne_.js_escs_[s];=0A=
}=0A=
=0A=
/** convert a string to a javascript string literal.  This function has =
the=0A=
  * property that the return value is also already html escaped, so the =
output=0A=
  * can be embedded in an html handler attribute.=0A=
  */=0A=
function ToJSString(s) {=0A=
  return "'" + s.toString().replace(JS_SPECIAL_RE_, JSEscOne_) + "'";=0A=
}=0A=
=0A=
// converts multiple ws chars to a single space, and strips=0A=
// leading and trailing ws=0A=
var spc_re_ =3D /\s+/g;=0A=
var beg_spc_re_ =3D /^ /;=0A=
var end_spc_re_ =3D / $/;=0A=
function CollapseWhitespace(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(spc_re_, " ").replace(beg_spc_re_, "").=0A=
    replace(end_spc_re_, "");=0A=
}=0A=
=0A=
var newline_re_ =3D /\r?\n/g;=0A=
var spctab_re_ =3D /[ \t]+/g;=0A=
var nbsp_re_ =3D /\xa0/g;=0A=
function StripNewlines(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(newline_re_, " ");=0A=
}=0A=
=0A=
function CanonicalizeNewlines(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(newline_re_, '\n');=0A=
}=0A=
=0A=
function HtmlifyNewlines(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(newline_re_, "<br>");=0A=
}=0A=
=0A=
function NormalizeSpaces(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(spctab_re_, " ").replace(nbsp_re_, " ");=0A=
}=0A=
=0A=
// URL encodes the string.=0A=
function UrlEncode(str) {=0A=
  return encodeURIComponent(str);=0A=
}=0A=
=0A=
function Trim(str) {=0A=
  if (!str) return "";=0A=
  return str.replace(/^\s+/, "").replace(/\s+$/, "");=0A=
}=0A=
=0A=
function EndsWith(str, suffix) {=0A=
  if (!str) return !suffix;=0A=
  return (str.lastIndexOf(suffix) =3D=3D (str.length - suffix.length));=0A=
}=0A=
=0A=
// Check if a string is empty=0A=
function IsEmpty(str) {=0A=
  return CollapseWhitespace(str) =3D=3D "";=0A=
}=0A=
=0A=
// Check if a character is a letter=0A=
function IsLetterOrDigit(ch) {=0A=
  return ((ch >=3D "a" && ch <=3D "z") ||=0A=
          (ch >=3D "A" && ch <=3D "Z") ||=0A=
         (ch >=3D '0' && ch <=3D '9'));=0A=
}=0A=
=0A=
// Check if a character is a space character=0A=
function IsSpace(ch) {=0A=
  return (" \t\r\n".indexOf(ch) >=3D 0);=0A=
}=0A=
=0A=
// Converts any instances of "\r" or "\r\n" style EOLs into "\n" (Line =
Feed),=0A=
// and also trim the extra newlines and whitespaces at the end.=0A=
var eol_re_ =3D /\r\n?/g;=0A=
var trailingspc_re_ =3D /[\n\t ]+$/;=0A=
function NormalizeText(str) {=0A=
  return str.replace(eol_re_, "\n").replace(trailingspc_re_, "");=0A=
}=0A=
=0A=
// Inserts <wbr>s (word break tag) after every n non-space chars and/or=0A=
// after or before certain special chars. The input string should be =
plain=0A=
// text that has not yet been HTML-escaped.=0A=
// Params:=0A=
//   str: The string to insert <wbr>s into.=0A=
//   n: The maximum number of consecutive non-space characters to allow =
before=0A=
//     adding a <wbr>. To turn off this rule (i.e. if you only want to =
add=0A=
//     breaks based on special characters), pass in the value -1.=0A=
//   chars_to_break_after: The list of special characters (concatenated =
into a=0A=
//     string) after which a <wbr> should be added, if there is no =
natural=0A=
//     break at that point. To turn off this rule, pass in the empty =
string.=0A=
//   chars_to_break_before: The list of special characters (concatenated =
into a=0A=
//     string) before which a <wbr> should be added, if there is no =
natural=0A=
//     break at that point. To turn off this rule, pass in the empty =
string.=0A=
// Returns: The string str htmlescaped, and with <wbr>s inserted =
according to=0A=
//   the rules specified by the other arguments.=0A=
function HtmlEscapeInsertWbrs(str, n, chars_to_break_after,=0A=
                              chars_to_break_before) {=0A=
  AssertNumArgs(4);=0A=
=0A=
  var out =3D '';=0A=
  var strpos =3D 0;=0A=
  var spc =3D 0;=0A=
=0A=
  for (var i =3D 1; i < str.length; ++i) {=0A=
    var prev_char =3D str.charAt(i - 1);=0A=
    var next_char =3D str.charAt(i);=0A=
    if (IsSpace(next_char)) {=0A=
      spc =3D i;=0A=
    } else if (i - spc =3D=3D n ||=0A=
               chars_to_break_after.indexOf(prev_char) !=3D -1 ||=0A=
               chars_to_break_before.indexOf(next_char) !=3D -1) {=0A=
      out +=3D HtmlEscape(str.substring(strpos, i)) + '<wbr>';=0A=
      strpos =3D i;=0A=
      spc =3D i;=0A=
    }=0A=
  }=0A=
  out +=3D HtmlEscape(str.substr(strpos));=0A=
  return out;=0A=
}=0A=
=0A=
// Converts a string to its canonicalized label form.=0A=
var illegal_chars_re_ =3D /[ \/(){}&|\\\"\000]/g;=0A=
function CanonicalizeLabel(str, lowercase) {=0A=
  var uppercase =3D str.replace(illegal_chars_re_, '-');=0A=
  return lowercase ? uppercase.toLowerCase() : uppercase;=0A=
}=0A=
=0A=
// Case-insensitive string comparator=0A=
function CompareStringsIgnoreCase(s1, s2) {=0A=
  s1 =3D s1.toLowerCase();=0A=
  s2 =3D s2.toLowerCase();=0A=
=0A=
  if (s1 < s2) {=0A=
    return -1;=0A=
  } else if (s1 =3D=3D s2) {=0A=
    return 0;=0A=
  } else {=0A=
    return 1;=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// TextArea utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
=0A=
// Gets the cursor pos in a text area. Returns -1 if the cursor pos =
cannot=0A=
// be determined or if the cursor out of the textfield.=0A=
function GetCursorPos(win, textfield) {=0A=
  try {=0A=
    if (IsDefined(textfield.selectionEnd)) {=0A=
      // Mozilla directly supports this=0A=
      return textfield.selectionEnd;=0A=
=0A=
    } else if (win.document.selection && =
win.document.selection.createRange) {=0A=
      // IE doesn't export an accessor for the endpoints of a selection.=0A=
      // Instead, it uses the TextRange object, which has an extremely =
obtuse=0A=
      // API. Here's what seems to work:=0A=
=0A=
      // (1) Obtain a textfield from the current selection (cursor)=0A=
      var tr =3D win.document.selection.createRange();=0A=
=0A=
      // Check if the current selection is in the textfield=0A=
      if (tr.parentElement() !=3D textfield) {=0A=
        return -1;=0A=
      }=0A=
=0A=
      // (2) Make a text range encompassing the textfield=0A=
      var tr2 =3D tr.duplicate();=0A=
      tr2.moveToElementText(textfield);=0A=
=0A=
      // (3) Move the end of the copy to the beginning of the selection=0A=
      tr2.setEndPoint("EndToStart", tr);=0A=
=0A=
      // (4) The span of the textrange copy is equivalent to the cursor =
pos=0A=
      var cursor =3D tr2.text.length;=0A=
=0A=
      // Finally, perform a sanity check to make sure the cursor is in =
the=0A=
      // textfield. IE sometimes screws this up when the window is =
activated=0A=
      if (cursor > textfield.value.length) {=0A=
        return -1;=0A=
      }=0A=
      return cursor;=0A=
    } else {=0A=
      Debug("Unable to get cursor position for: " + navigator.userAgent);=0A=
=0A=
      // Just return the size of the textfield=0A=
      // TODO: Investigate how to get cursor pos in Safari!=0A=
      return textfield.value.length;=0A=
    }=0A=
  } catch (e) {=0A=
    DumpException(e, "Cannot get cursor pos");=0A=
  }=0A=
  =0A=
  return -1;=0A=
}=0A=
=0A=
function SetCursorPos(win, textfield, pos) {=0A=
  if (IsDefined(textfield.selectionEnd) &&=0A=
      IsDefined(textfield.selectionStart)) {=0A=
    // Mozilla directly supports this=0A=
    textfield.selectionStart =3D pos;=0A=
    textfield.selectionEnd =3D pos;=0A=
=0A=
  } else if (win.document.selection && textfield.createTextRange) {=0A=
    // IE has textranges. A textfield's textrange encompasses the=0A=
    // entire textfield's text by default=0A=
    var sel =3D textfield.createTextRange();=0A=
=0A=
    sel.collapse(true);=0A=
    sel.move("character", pos);=0A=
    sel.select();=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Array utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// Find an item in an array, returns the key, or -1 if not found=0A=
function FindInArray(array, x) {=0A=
  for (var i =3D 0; i < array.length; i++) {=0A=
    if (array[i] =3D=3D x) {=0A=
      return i;=0A=
    }=0A=
  }=0A=
  return -1;=0A=
}=0A=
=0A=
// Inserts an item into an array, if it's not already in the array=0A=
function InsertArray(array, x) {=0A=
  if (FindInArray(array, x) =3D=3D -1) {=0A=
    array[array.length] =3D x;=0A=
  }=0A=
}=0A=
=0A=
// Delete an element from an array=0A=
function DeleteArrayElement(array, x) {=0A=
  var i =3D 0;=0A=
  while (i < array.length && array[i] !=3D x)=0A=
    i++;=0A=
  array.splice(i, 1);=0A=
}=0A=
=0A=
// Copies a flat array=0A=
function CopyArray(array) {=0A=
  var copy =3D [];=0A=
  for (var i =3D 0; i < array.length; i++) {=0A=
    copy[i] =3D array[i];=0A=
  }=0A=
  return copy;=0A=
}=0A=
=0A=
// Clone an object (recursively)=0A=
function CloneObject(x) {=0A=
  if ((typeof x) =3D=3D "object") {=0A=
    var y =3D [];=0A=
    for (var i in x) {=0A=
      y[i] =3D CloneObject(x[i]);=0A=
    }=0A=
    return y;=0A=
  }=0A=
  return x;=0A=
}=0A=
=0A=
/**=0A=
 * Clone an event; cannot use CloneObject(event)=0A=
 * because it suffers from infinite recursion.=0A=
 * Thus, only a subset of the event properties are=0A=
 * cloned -- if you need others, just add them=0A=
 * to this function (just don't remove any!)=0A=
 */=0A=
function CloneEvent(ev) {=0A=
  var clone =3D {};=0A=
  clone.clientX =3D ev.clientX;=0A=
  clone.clientY =3D ev.clientY;=0A=
  clone.pageX =3D ev.pageX;=0A=
  clone.pageY =3D ev.pageY;=0A=
  clone.type =3D ev.type;=0A=
  clone.srcElement =3D ev.srcElement;=0A=
  clone.target =3D ev.target;=0A=
  clone.cancelBubble =3D ev.cancelBubble;=0A=
  clone.explicitOriginalTarget =3D ev.explicitOriginalTarget;=0A=
  // add more properties here=0A=
=0A=
  return clone;=0A=
}=0A=
=0A=
function GetEventTarget(/*Event*/ ev) {=0A=
// Event is not a type in IE; IE uses Object for events=0A=
//  AssertType(ev, Event, 'arg passed to GetEventTarget not an Event');=0A=
  return ev.srcElement || ev.target;=0A=
}=0A=
=0A=
/** cancels the event */=0A=
// from http://www.quirksmode.org/js/events_order.html=0A=
function CancelEvent(/*Event*/ ev) {=0A=
  if (is_ie) {=0A=
    ev.cancelBubble =3D true;=0A=
  } else if (ev.stopPropagation) {=0A=
    ev.stopPropagation();=0A=
  }=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Formatting utilities=0A=
//-----------------------------------------------------------------------=
-=0A=
// A simple printf type function that takes in a template array, and a =
data=0A=
// array. e.g. PrintArray(["a",,"b",,"c"], ["x", "y"]) =3D> axbyc=0A=
function PrintArray(array, data) {=0A=
  // Check that the argument count is correct.=0A=
  AssertEquals(array.length, data.length * 2 + 1);=0A=
=0A=
  for (var i =3D 0, idx =3D 1; i < data.length; i++, idx +=3D 2) {=0A=
    array[idx] =3D data[i];=0A=
  }=0A=
  return array.join("");=0A=
}=0A=
=0A=
function ImageHtml(url, attributes) {=0A=
  return "<img " + attributes + " src=3D" + url + ">";=0A=
}=0A=
=0A=
// Formats an object id that has two id numbers, eg, foo_3_7=0A=
function MakeId3(idprefix, m, n) {=0A=
  return idprefix + m + "_" + n;=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Email address parsing=0A=
//-----------------------------------------------------------------------=
-=0A=
// Parse an email address of the form "name" <address> into [name, =
address]=0A=
function ParseAddress(addr) {=0A=
  var name =3D "";=0A=
  var address =3D "";=0A=
  for (var i =3D 0; i < addr.length;) {=0A=
    var token =3D GetEmailToken(addr, i);=0A=
    if (token.charAt(0) =3D=3D '<') {=0A=
      var end =3D token.indexOf(">");=0A=
      address =3D token.substring(1, (end !=3D -1) ? end : token.length);=0A=
    } else if (address =3D=3D "") {=0A=
      name +=3D token;=0A=
    }=0A=
    i +=3D token.length;=0A=
  }=0A=
=0A=
  // Check if it's a simple email address of the form "jlim@google.com"=0A=
  if (address =3D=3D "" && name.indexOf("@") !=3D -1) {=0A=
    address =3D name;=0A=
    name =3D "";=0A=
  }=0A=
=0A=
  name =3D CollapseWhitespace(name);=0A=
  name =3D StripQuotes(name, "'");=0A=
  name =3D StripQuotes(name, "\"");=0A=
  address =3D CollapseWhitespace(address);=0A=
  return [name, address];=0A=
}=0A=
=0A=
// Given an email address, get the address part=0A=
function GetAddress(address) {=0A=
  return ParseAddress(address)[1];=0A=
}=0A=
=0A=
// Get the username part of an email address=0A=
function GetAddressUsername(address) {=0A=
  address =3D GetAddress(address);=0A=
  var at =3D address.indexOf("@");=0A=
  return (at =3D=3D -1) ? address : address.substr(0, at);=0A=
}=0A=
=0A=
// Given an email address, get the personal part=0A=
function GetPersonal(address) {=0A=
  return ParseAddress(address)[0];=0A=
}=0A=
=0A=
// Given an address, get a short name=0A=
function GetPersonalElseUsername(address) {=0A=
  var personal =3D GetPersonal(address);=0A=
  if (personal !=3D "") {=0A=
    return personal;=0A=
  } else {=0A=
    return GetAddressUsername(address);=0A=
  }=0A=
}=0A=
=0A=
// Strip ' or " chars around a string=0A=
function StripQuotes(str, quotechar) {=0A=
  var len =3D str.length;=0A=
  if (str.charAt(0) =3D=3D quotechar &&=0A=
      str.charAt(len - 1) =3D=3D quotechar) {=0A=
    return str.substring(1, len - 1);=0A=
  }=0A=
  return str;=0A=
}=0A=
=0A=
// Convert a string containing list of email addresses into an array=0A=
// of strings=0A=
function EmailsToArray(str) {=0A=
  var result =3D [];=0A=
  var email =3D "";=0A=
  var token;=0A=
=0A=
  for (var i =3D 0; i < str.length; ) {=0A=
    token =3D GetEmailToken(str, i);=0A=
    if (token =3D=3D ",") {=0A=
      AddEmailAddress(result, email);=0A=
      email =3D "";=0A=
      i++;=0A=
      continue;=0A=
    }=0A=
    email +=3D token;=0A=
    i +=3D token.length;=0A=
  }=0A=
=0A=
  // Add last=0A=
  if (email !=3D"" || token =3D=3D ",") {=0A=
    AddEmailAddress(result, email);=0A=
  }=0A=
  return result;=0A=
}=0A=
=0A=
// Get the next token from a position in an address string=0A=
var openers_ =3D "\"<([";=0A=
var closers_ =3D "\">)]";=0A=
function GetEmailToken(str, pos) {=0A=
  var ch =3D str.charAt(pos);=0A=
  var p =3D openers_.indexOf(ch);=0A=
  if (p =3D=3D -1)=0A=
    return ch;=0A=
  var end_pos =3D str.indexOf(closers_.charAt(p), pos + 1);=0A=
  var token =3D (end_pos >=3D 0) ? str.substring(pos, end_pos + 1) :=0A=
              str.substr(pos);=0A=
  return token;=0A=
}=0A=
=0A=
// Add an email address to the result array.=0A=
function AddEmailAddress(result, email) {=0A=
  email =3D CleanEmailAddress(email);=0A=
  result[result.length] =3D email;=0A=
}=0A=
=0A=
// Clean up email address:=0A=
// - remove extra spaces=0A=
// - Surround name with quotes if it contains special characters=0A=
// to check if we need " quotes=0A=
// Note: do not use /g in the regular expression, otherwise the=0A=
// regular expression cannot be reusable.=0A=
var specialchars_re_ =3D /[()<>@,;:\\\".\[\]]/;=0A=
=0A=
function CleanEmailAddress(str) {=0A=
  var name_address =3D ParseAddress(str);=0A=
  var name =3D name_address[0];=0A=
  var address =3D name_address[1];=0A=
=0A=
  if (name.indexOf("\"") =3D=3D -1) {  // If there's no "=0A=
    var quote_needed =3D specialchars_re_.test(name);=0A=
    if (quote_needed) {=0A=
      name =3D "\"" + name + "\"";=0A=
    }=0A=
  }=0A=
=0A=
  if (name =3D=3D "")=0A=
    return address;=0A=
  else if (address =3D=3D "")=0A=
    return name;=0A=
  else=0A=
    return name + " <" + address + ">";=0A=
}=0A=
=0A=
//-----------------------------------------------------------------------=
-=0A=
// Misc=0A=
//-----------------------------------------------------------------------=
-=0A=
// Compare long hex strings=0A=
function CompareID(a, b) {=0A=
  if (a.length !=3D b.length) {=0A=
    return (a.length - b.length);=0A=
  } else {=0A=
    return (a < b) ? -1 : (a > b) ? 1 : 0;=0A=
  }=0A=
}=0A=
=0A=
// Check if a value is defined=0A=
function IsDefined(value) {=0A=
  return (typeof value) !=3D 'undefined';=0A=
}=0A=
=0A=
function GetKeyCode(event) {=0A=
  var code;=0A=
  if (event.keyCode) {=0A=
    code =3D event.keyCode;=0A=
  } else if (event.which) {=0A=
    code =3D event.which;=0A=
  }=0A=
  return code;=0A=
}=0A=
=0A=
// define a forid function to fetch a DOM node by id.=0A=
function forid_1(id) {=0A=
  return document.getElementById(id);=0A=
}=0A=
function forid_2(id) {=0A=
  return document.all[id];=0A=
}=0A=
=0A=
/**=0A=
 * Fetch an HtmlElement by id.=0A=
 * DEPRECATED: use $ in dom.js=0A=
 */=0A=
var forid =3D document.getElementById ? forid_1 : forid_2;=0A=
=0A=
=0A=
=0A=
function log(msg) {=0A=
  /* a top level window is its own parent.  Use !=3D or else fails on IE =
with=0A=
   * infinite loop.=0A=
   */=0A=
  try {=0A=
    if (window.parent !=3D window && window.parent.log) {=0A=
      window.parent.log(window.name + '::' + msg);=0A=
      return;=0A=
    }=0A=
  } catch (e) {=0A=
    // Error: uncaught exception: Permission denied to get property =
Window.log=0A=
  }=0A=
  var logPane =3D forid('log');=0A=
  if (logPane) {=0A=
    var logText =3D '<p class=3Dlogentry><span class=3Dlogdate>' + new =
Date() +=0A=
                  '</span><span class=3Dlogmsg>' + msg + '</span></p>';=0A=
    logPane.innerHTML =3D logText + logPane.innerHTML;=0A=
  } else {=0A=
    window.status =3D msg;=0A=
  }=0A=
}=0A=

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/v-app/scripts/107652916-dom.common.js

=0A=
// Commonly-used functions, reduced.=0A=
=0A=
function d(s) {return document.getElementById(s);}=0A=
function dE(o,s) {return o.getElementsByTagName(s);}=0A=
=0A=
/**=0A=
 * toggleDisplay()=0A=
 *=0A=
 * Will toggle the display property of the style object for any=0A=
 * DOM element or object that supports style as a property.=0A=
 *=0A=
 * Warning: This'll wreak havoc if applied to <TR> elements. Those=0A=
 * babies got different types "table-row" | "block" dependant on =0A=
 * what browser's being used.=0A=
 *=0A=
 * Warning: Written in Texas.  Yeehaw.=0A=
 *=0A=
 * Typical usage:=0A=
 * toggleDisplay(document.getElementById("foo"));=0A=
 */=0A=
function toggleDisplay(o)=0A=
{  =0A=
  var display =3D getStyle(o, "display"); =0A=
  =0A=
  if (o.style)=0A=
    o.style.display =3D=0A=
      (display !=3D "none") ? "none" : getDisplayStyleByTagName(o);=0A=
}=0A=
=0A=
=0A=
function getDisplayStyleByTagName(o)=0A=
{=0A=
  var n =3D o.nodeName.toLowerCase(); =0A=
  return (=0A=
          n =3D=3D "span"=0A=
          || n =3D=3D "img"=0A=
          || n =3D=3D "a"=0A=
          ) ? "inline" : "block";=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * hideElement()=0A=
 *=0A=
 * Hides an element from view.=0A=
 *=0A=
 * Typical usage:=0A=
 * hideElement(getElement("the-id-of-the-element"));=0A=
 */=0A=
function hideElement(o)=0A=
{=0A=
  if (o && o.style) o.style.display =3D "none";=0A=
}=0A=
=0A=
=0A=
=0A=
/**=0A=
 * showElement()=0A=
 *=0A=
 * Shows an element that was hidden from view.=0A=
 *=0A=
 * Typical usage:=0A=
 * showElement(getElement("the-id-of-the-element"));=0A=
 */=0A=
function showElement(o)=0A=
{=0A=
  =0A=
  if (o && o.style) o.style.display =3D getDisplayStyleByTagName(o);=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * getElement()=0A=
 *=0A=
 * Returns an element by its ID or shows an alert if it can't be found.=0A=
 *=0A=
 * Typical usage:=0A=
 * getElement("the-id-of-the-element");=0A=
 */=0A=
function getElement(id) {=0A=
  var e =3D d(id);=0A=
  if (!e) {=0A=
    alert("Cannot get element: " + id);=0A=
  }=0A=
  return e;=0A=
}=0A=
=0A=
/**=0A=
 * setInnerHTML()=0A=
 *=0A=
 * Sets the innerHTML of an element or shows an alert if can't be set.=0A=
 *=0A=
 * Typical usage:=0A=
 * setInnerHTML("the-id-of-the-element");=0A=
 */=0A=
function setInnerHTML(id, html) {=0A=
  try {=0A=
    getElement(id).innerHTML =3D html;=0A=
  } catch (ex) {=0A=
    alert("Cannot set inner HTML: " + id);=0A=
  }=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * setCssStyle()=0A=
 *=0A=
 * Sets the style of an element by its id or shows an alert if can't be =
set.=0A=
 *=0A=
 * Typical usage:=0A=
 * setCssStyle("the-id-of-the-element", "display", "block");=0A=
 */=0A=
function setCssStyle(id, name, value) {=0A=
  try {=0A=
    getElement(id).style[name] =3D value;=0A=
  } catch (ex) {=0A=
    alert("Cannot set style: " + id);=0A=
  }=0A=
}=0A=
=0A=
=0A=
/**=0A=
 * getStyle()=0A=
 *=0A=
 * Gets the computed style of any object.=0A=
 *=0A=
 * WARNING: Produces unexpected results in Safari.  To achieve best =0A=
 * results, explicitly set the style property for that browser when the =0A=
 * element is rendered.=0A=
 *=0A=
 * Typical usage:=0A=
 * getStyle(object, "display");=0A=
 */=0A=
function getStyle(el, style) {=0A=
  if (!document.getElementById || !el) return;=0A=
  =0A=
  if (document.defaultView=0A=
      && document.defaultView.getComputedStyle) {=0A=
      return document.defaultView.=0A=
        getComputedStyle(el, "").getPropertyValue(style);=0A=
  }  =0A=
  else if (el.currentStyle) {=0A=
    return el.currentStyle[style];=0A=
  }  =0A=
  else { =0A=
    return el.style.display;=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
 * getStyleAttribute()=0A=
 *=0A=
 * Returns the style attribute of the specified node.=0A=
 */=0A=
function getStyleAttribute(node) {=0A=
  if (Detect.IE()) {=0A=
    return node.getAttribute('style').value;=0A=
  }else {=0A=
    return node.getAttribute('style');=0A=
  }=0A=
}=0A=
=0A=
=0A=
/*=0A=
 * showProps()=0A=
 *=0A=
 * Displays all the properties for a given element=0A=
 */=0A=
function showProps(o) {=0A=
	var s=3D""; for (var p in o) {=0A=
		s+=3Dp+": "+o[p]+"\n<br />";=0A=
	}=0A=
	document.write(s);=0A=
}=0A=
=0A=
=0A=
=0A=
function setIFrameEvent(iframe, eventName, func)=0A=
{=0A=
  if (document.all) {=0A=
    eval('getIFrameDocument(iframe).on' + eventName + ' =3D func;');=0A=
  } else {=0A=
    iframe.contentWindow.addEventListener(eventName, func, true);=0A=
  }=0A=
}=0A=
=0A=
function setIFrameBody(iframe, strStyle, innerHtml) =0A=
{=0A=
  if (!innerHtml) innerHtml =3D '';=0A=
  if (innerHtml =3D=3D '' && Detect.IE()) {=0A=
    innerHtml =3D '<div></div>';=0A=
  }=0A=
  var doc =3D getIFrameDocument(iframe);=0A=
  doc.open();=0A=
  doc.write('<head></head><body style=3D"' + strStyle + '">'=0A=
    + innerHtml + '</body>');=0A=
  doc.close();=0A=
}=0A=
=0A=
=0A=
function getIFrameDocument(iframe)=0A=
{=0A=
  if (Detect.IE()) {=0A=
    return iframe.document;=0A=
  } else {=0A=
    return iframe.contentDocument;=0A=
  }=0A=
}=0A=
=0A=
function getIFrame(strId)=0A=
{=0A=
  if (Detect.IE()) {=0A=
    return document.frames[strId];=0A=
  } else {=0A=
    return document.getElementById(strId);=0A=
  }=0A=
}=0A=
=0A=
=0A=
function createElementandAppend(nodeName, strId, appendTo) {=0A=
  var el =3D document.createElement(nodeName);=0A=
  el.setAttribute("id", strId);=0A=
  if (appendTo) {=0A=
    appendTo.appendChild(el); =0A=
  } else {=0A=
    document.body.appendChild(el); =0A=
  }=0A=
  return el; =0A=
}=0A=
=0A=
function createElementandInsertBefore(nodeName, strId, appendTo, =
sibling) {=0A=
  var el =3D document.createElement(nodeName);=0A=
  el.setAttribute("id", strId);=0A=
  if (appendTo) {=0A=
    appendTo.insertBefore(el, sibling); =0A=
  } else {=0A=
    document.body.insertBefore(el, sibling); =0A=
  }=0A=
  return el; =0A=
}=0A=
=0A=
=0A=
/**=0A=
* getXY()=0A=
 *=0A=
 * Returns the position of any element as an object.=0A=
 *=0A=
 * Typical usage:=0A=
 * var pos =3D getXY(object);=0A=
 * alert(pos.x + " " +pos.y);=0A=
 */=0A=
function getXY(el) {=0A=
  var x =3D el.offsetLeft;=0A=
  var y =3D el.offsetTop;=0A=
  if (el.offsetParent !=3D null) {=0A=
    var pos =3D getXY(el.offsetParent);=0A=
    x +=3D pos.x;=0A=
    y +=3D pos.y;=0A=
  }=0A=
  return {x: x, y: y}=0A=
}=0A=
=0A=
// The following 3 functions are taken from common.js=0A=
function hasClass(el, cl) {=0A=
  if (el =3D=3D null || el.className =3D=3D null) return false;=0A=
  var classes =3D el.className.split(" ");=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] =3D=3D cl) {=0A=
      return true;=0A=
    }=0A=
  }=0A=
  return false;=0A=
}=0A=
=0A=
// Add a class to element=0A=
function addClass(el, cl) {=0A=
  if (hasClass(el, cl)) return;=0A=
  el.className +=3D " " + cl;=0A=
} =0A=
=0A=
// Remove a class from an element=0A=
function removeClass(el, cl) {=0A=
  if (el.className =3D=3D null) return;=0A=
  var classes =3D el.className.split(" ");=0A=
  var result =3D [];=0A=
  var changed =3D false;=0A=
  for (var i =3D 0; i < classes.length; i++) {=0A=
    if (classes[i] !=3D cl) {=0A=
      if (classes[i]) { result.push(classes[i]); }=0A=
    } else {=0A=
      changed =3D true;=0A=
    } =0A=
  } =0A=
  if (changed) { el.className =3D result.join(" "); }=0A=
} =0A=
=0A=
function toggleClass(el, cl) {=0A=
  if (hasClass(el, cl)) {=0A=
    removeClass(el, cl);=0A=
  } else {=0A=
    addClass(el, cl);=0A=
  }=0A=
}=0A=
=0A=
=0A=
/* Constants for node types, since IE doesn't support Node.TEXT_NODE */=0A=
var TEXT_NODE =3D 3;=0A=
var ELEMENT_NODE =3D 1;=0A=
=0A=
=0A=

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_003A_01C8A309.BB7CF1A0"


------=_NextPart_001_003A_01C8A309.BB7CF1A0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-part-2.html

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml" xmlns:b =3D=20
"http://www.google.com/2005/gml/b" xmlns:data =3D=20
"http://www.google.com/2005/gml/data" xmlns:expr =3D=20
"http://www.google.com/2005/gml/expr"><HEAD><TITLE>Ruby on Rails =
Development: Ruby on Rails Deprecations Part 2: ActiveRecord</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3DUTF-8">
<META content=3Dtrue name=3DMSSmartTagsPreventParsing>
<META content=3D"MSHTML 6.00.6000.16640" name=3DGENERATOR><LINK=20
title=3D"Ruby on Rails Development - Atom"=20
href=3D"http://rubythis.blogspot.com/feeds/posts/default"=20
type=3Dapplication/atom+xml rel=3Dalternate><LINK=20
title=3D"Ruby on Rails Development - RSS"=20
href=3D"http://rubythis.blogspot.com/feeds/posts/default?alt=3Drss"=20
type=3Dapplication/rss+xml rel=3Dalternate><LINK=20
title=3D"Ruby on Rails Development - Atom"=20
href=3D"http://www.blogger.com/feeds/4726949601275841816/posts/default"=20
type=3Dapplication/atom+xml rel=3Dservice.post><LINK title=3DRSD=20
href=3D"http://www.blogger.com/rsd.g?blogID=3D4726949601275841816"=20
type=3Dapplication/rsd+xml rel=3DEditURI><LINK=20
title=3D"Ruby on Rails Development - Atom"=20
href=3D"http://rubythis.blogspot.com/feeds/3059045496061883853/comments/d=
efault"=20
type=3Dapplication/atom+xml rel=3Dalternate>
<META content=3DKjtVBzNqAFPT4+aPO2PWLhYUi+UUCz6BEq5ex5bUc30=3D=20
name=3Dverify-v1></META>
<STYLE id=3Dpage-skin-1 type=3Dtext/css>BODY {
	BACKGROUND: #ffffff; MARGIN: 0px; FONT: small Georgia Serif; COLOR: =
#333333; TEXT-ALIGN: center
}
A:link {
	COLOR: #5588aa; TEXT-DECORATION: none
}
A:visited {
	COLOR: #999999; TEXT-DECORATION: none
}
A:hover {
	COLOR: #cc6600; TEXT-DECORATION: underline
}
A IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#header-wrapper {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; MARGIN: =
0px auto 10px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 660px; =
BORDER-BOTTOM: #cccccc 1px solid
}
#header-inner {
	BACKGROUND-POSITION: center 50%; MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
#header {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; MARGIN: =
5px; BORDER-LEFT: #cccccc 1px solid; COLOR: #666666; BORDER-BOTTOM: =
#cccccc 1px solid; TEXT-ALIGN: center
}
#header H1 {
	PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 0.25em; =
MARGIN: 5px 5px 0px; FONT: 200% Georgia, Serif; TEXT-TRANSFORM: =
uppercase; PADDING-TOP: 15px; LETTER-SPACING: 0.2em
}
#header A {
	COLOR: #666666; TEXT-DECORATION: none
}
#header A:hover {
	COLOR: #666666
}
#header .description {
	PADDING-RIGHT: 20px; PADDING-LEFT: 20px; MAX-WIDTH: 700px; =
PADDING-BOTTOM: 15px; MARGIN: 0px 5px 5px; FONT: 78% 'Trebuchet MS', =
Trebuchet, Arial, Verdana, Sans-serif; TEXT-TRANSFORM: uppercase; COLOR: =
#999999; PADDING-TOP: 0px; LETTER-SPACING: 0.2em
}
#header IMG {
	MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
#outer-wrapper {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: =
0px auto; FONT: 100% Georgia, Serif; WIDTH: 660px; PADDING-TOP: 10px; =
TEXT-ALIGN: left
}
#main-wrapper {
	FLOAT: left; OVERFLOW: hidden; WIDTH: 410px; WORD-WRAP: break-word
}
#sidebar-wrapper {
	FLOAT: right; OVERFLOW: hidden; WIDTH: 220px; WORD-WRAP: break-word
}
H2 {
	MARGIN: 1.5em 0px 0.75em; FONT: 78%/1.4em 'Trebuchet =
MS',Trebuchet,Arial,Verdana,Sans-serif; TEXT-TRANSFORM: uppercase; =
COLOR: #999999; LETTER-SPACING: 0.2em
}
H2.date-header {
	MARGIN: 1.5em 0px 0.5em
}
.post {
	PADDING-BOTTOM: 1.5em; MARGIN: 0.5em 0px 1.5em; BORDER-BOTTOM: #cccccc =
1px dotted
}
.post H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
140%; PADDING-BOTTOM: 4px; MARGIN: 0.25em 0px 0px; COLOR: #cc6600; =
LINE-HEIGHT: 1.4em; PADDING-TOP: 0px
}
.post H3 A {
	DISPLAY: block; FONT-WEIGHT: normal; COLOR: #cc6600; TEXT-DECORATION: =
none
}
.post H3 A:visited {
	DISPLAY: block; FONT-WEIGHT: normal; COLOR: #cc6600; TEXT-DECORATION: =
none
}
.post H3 STRONG {
	DISPLAY: block; FONT-WEIGHT: normal; COLOR: #cc6600; TEXT-DECORATION: =
none
}
.post H3 STRONG {
	COLOR: #333333
}
.post H3 A:hover {
	COLOR: #333333
}
.post P {
	MARGIN: 0px 0px 0.75em; LINE-HEIGHT: 1.6em
}
.post-footer {
	MARGIN: 0.75em 0px; FONT: 78%/1.4em 'Trebuchet MS', Trebuchet, Arial, =
Verdana, Sans-serif; TEXT-TRANSFORM: uppercase; COLOR: #999999; =
LETTER-SPACING: 0.1em
}
.comment-link {
	MARGIN-LEFT: 0.6em
}
.post IMG {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: =
#cccccc 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid
}
.post BLOCKQUOTE {
	MARGIN: 1em 20px
}
.post BLOCKQUOTE P {
	MARGIN: 0.75em 0px
}
#comments H4 {
	FONT-WEIGHT: bold; MARGIN: 1em 0px; TEXT-TRANSFORM: uppercase; COLOR: =
#999999; LINE-HEIGHT: 1.4em; LETTER-SPACING: 0.2em
}
#comments-block {
	MARGIN: 1em 0px 1.5em; LINE-HEIGHT: 1.6em
}
#comments-block .comment-author {
	MARGIN: 0.5em 0px
}
#comments-block .comment-body {
	MARGIN: 0.25em 0px 0px
}
#comments-block .comment-footer {
	MARGIN: -0.25em 0px 2em; TEXT-TRANSFORM: uppercase; LINE-HEIGHT: 1.4em; =
LETTER-SPACING: 0.1em
}
#comments-block .comment-body P {
	MARGIN: 0px 0px 0.75em
}
.deleted-comment {
	COLOR: gray; FONT-STYLE: italic
}
#blog-pager-newer-link {
	FLOAT: left
}
#blog-pager-older-link {
	FLOAT: right
}
#blog-pager {
	TEXT-ALIGN: center
}
.feed-links {
	CLEAR: both; LINE-HEIGHT: 2.5em
}
.sidebar {
	COLOR: #666666; LINE-HEIGHT: 1.5em
}
.sidebar UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.sidebar LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0.25em; MARGIN: =
0px; TEXT-INDENT: -15px; LINE-HEIGHT: 1.5em; PADDING-TOP: 0px
}
.sidebar .widget {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1.5em; MARGIN: =
0px 0px 1.5em; PADDING-TOP: 0px; BORDER-BOTTOM: #cccccc 1px dotted
}
.main .widget {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1.5em; MARGIN: =
0px 0px 1.5em; PADDING-TOP: 0px; BORDER-BOTTOM: #cccccc 1px dotted
}
.main .Blog {
	BORDER-BOTTOM-WIDTH: 0px
}
.profile-img {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 4px; FLOAT: left; PADDING-BOTTOM: 4px; =
MARGIN: 0px 5px 5px 0px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: =
4px; BORDER-BOTTOM: #cccccc 1px solid
}
.profile-data {
	MARGIN: 0px; FONT: bold 78%/1.6em 'Trebuchet MS', Trebuchet, Arial, =
Verdana, Sans-serif; TEXT-TRANSFORM: uppercase; COLOR: #999999; =
LETTER-SPACING: 0.1em
}
.profile-datablock {
	MARGIN: 0.5em 0px
}
.profile-textblock {
	MARGIN: 0.5em 0px; LINE-HEIGHT: 1.6em
}
.profile-link {
	FONT: 78% 'Trebuchet MS', Trebuchet, Arial, Verdana, Sans-serif; =
TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em
}
#footer {
	CLEAR: both; MARGIN: 0px auto; TEXT-TRANSFORM: uppercase; WIDTH: 660px; =
LINE-HEIGHT: 1.6em; PADDING-TOP: 15px; LETTER-SPACING: 0.1em; =
TEXT-ALIGN: center
}
</STYLE>
<LINK href=3D"http://www.blogger.com/widgets/3319451950-blogarchive.css" =

type=3Dtext/css rel=3Dstylesheet><!-- -->
<STYLE type=3Dtext/css>@import url( =
http://www.blogger.com/css/blog_controls.css );
@import url( =
http://www.blogger.com/dyn-css/authorization.css?targetBlogID=3D472694960=
1275841816 );
#navbar-iframe {
	DISPLAY: block
}
</STYLE>
<LINK href=3D"http://www.blogger.com/widgets/3597482671-blog.css" =
type=3Dtext/css=20
rel=3Dstylesheet></HEAD>
<BODY>
<DIV class=3D"navbar section" id=3Dnavbar>
<DIV class=3D"widget Navbar" id=3DNavbar1><IFRAME id=3Dnavbar-iframe=20
title=3D"Blogger Navigation and Search" marginWidth=3D0 marginHeight=3D0 =

src=3D"http://www.blogger.com/navbar.g?targetBlogID=3D4726949601275841816=
&amp;blogName=3DRuby+on+Rails+Development&amp;publishMode=3DPUBLISH_MODE_=
BLOGSPOT&amp;navbarType=3DBLUE&amp;layoutType=3DLAYOUTS&amp;homepageUrl=3D=
http%3A%2F%2Frubythis.blogspot.com%2F&amp;searchRoot=3Dhttp%3A%2F%2Frubyt=
his.blogspot.com%2Fsearch"=20
frameBorder=3D0 width=3D"100%" scrolling=3Dno height=3D30></IFRAME>
<DIV id=3Dspace-for-ie></DIV></DIV></DIV>
<DIV id=3Douter-wrapper>
<DIV id=3Dwrap2><!-- skip links for text browsers --><SPAN =
id=3Dskiplinks=20
style=3D"DISPLAY: none"><A=20
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html#main">skip=20
to main </A>| <A=20
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html#sidebar">skip=20
to sidebar</A> </SPAN>
<DIV id=3Dheader-wrapper>
<DIV class=3D"header section" id=3Dheader>
<DIV class=3D"widget Header" id=3DHeader1>
<DIV id=3Dheader-inner>
<DIV class=3Dtitlewrapper>
<H1 class=3Dtitle><A href=3D"http://rubythis.blogspot.com/">Ruby on =
Rails=20
Development</A> </H1></DIV>
<DIV class=3Ddescriptionwrapper>
<P class=3Ddescription><SPAN>Ruby, Rails, and other programming=20
topics.</SPAN></P></DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dcontent-wrapper>
<DIV id=3Dmain-wrapper>
<DIV class=3D"main section" id=3Dmain>
<DIV class=3D"widget Blog" id=3DBlog1>
<DIV class=3D"blog-posts hfeed"><!-- google_ad_section_start -->
<H2 class=3Ddate-header>Wednesday, December 6, 2006</H2>
<DIV class=3D"post hentry uncustomized-post-template"><A=20
name=3D3059045496061883853></A>
<H3 class=3D"post-title entry-title"><A=20
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html">Ruby=20
on Rails Deprecations Part 2: ActiveRecord</A> </H3>
<DIV class=3Dpost-header-line-1></DIV>
<DIV class=3D"post-body entry-content">
<P>My search of deprecations for ActiveRecord returned a mercifully =
short list.=20
Here they are:<BR><BR><SPAN style=3D"FONT-SIZE: 130%">Deprecated=20
Associations</SPAN><BR>
<UL>
  <LI>:dependent =3D&gt; true - use :dependent =3D&gt; :destroy
  <LI>:exclusively_dependent - use :dependent =3D&gt; :delete_all
  <LI>push_with_attributes - if associations require attributes, use =
has_many=20
  :through</LI></UL><SPAN style=3D"FONT-SIZE: 130%">Deprecated =
Methods</SPAN><BR>
<UL>
  <LI>count by conditions or joins - use count(column_name, options)
  <LI>find_all - use find(:all, ...)
  <LI>find_first - use find(:first, ...)
  <LI>human_attribute_name - use .humanize
  <LI>Object-level transactions</LI></UL>
<P></P>
<DIV style=3D"CLEAR: both"></DIV></DIV>
<DIV class=3Dpost-footer>
<DIV class=3D"post-footer-line post-footer-line-1"><SPAN=20
class=3D"post-author vcard">Posted by <SPAN class=3Dfn>rbaldwin</SPAN> =
</SPAN><SPAN=20
class=3Dpost-timestamp>at <A class=3Dtimestamp-link title=3D"permanent =
link"=20
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html"=20
rel=3Dbookmark><ABBR class=3Dpublished =
title=3D2006-12-06T05:53:00-08:00>5:53=20
AM</ABBR></A> </SPAN><SPAN class=3Dpost-comment-link></SPAN><SPAN=20
class=3D"post-backlinks post-comment-link"></SPAN><SPAN =
class=3Dpost-icons><SPAN=20
class=3D"item-control blog-admin pid-834863446"><A title=3D"Edit Post"=20
href=3D"http://www.blogger.com/post-edit.g?blogID=3D4726949601275841816&a=
mp;postID=3D3059045496061883853"><IMG=20
class=3Dicon-action alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_edit_allbkg.gif">=20
</A></SPAN></SPAN></DIV>
<DIV class=3D"post-footer-line post-footer-line-2"><SPAN =
class=3Dpost-labels>Labels:=20
<A href=3D"http://rubythis.blogspot.com/search/label/ActiveRecord"=20
rel=3Dtag>ActiveRecord</A>, <A=20
href=3D"http://rubythis.blogspot.com/search/label/deprecated"=20
rel=3Dtag>deprecated</A>, <A=20
href=3D"http://rubythis.blogspot.com/search/label/rails" =
rel=3Dtag>rails</A>=20
</SPAN></DIV>
<DIV class=3D"post-footer-line post-footer-line-3"></DIV></DIV></DIV>
<DIV class=3Dcomments id=3Dcomments><A name=3Dcomments></A>
<H4>1 comments: </H4>
<DL id=3Dcomments-block>
  <DT class=3D"comment-author blogger-comment-icon" =
id=3Dc7855728646889222592><A=20
  name=3Dc7855728646889222592></A><A=20
  href=3D"http://www.blogger.com/profile/03502529417905712180"=20
  rel=3Dnofollow>AtomicSEO</A> said...=20
  <DD class=3Dcomment-body>
  <P><A href=3D"http://www.atomicsearchengineoptimization.com/"=20
  rel=3Dnofollow>Atomic SEO</A> I really like this blog when I first =
signed up=20
  here i wasn't sure were to post...</P>
  <DD class=3Dcomment-footer><SPAN class=3Dcomment-timestamp><A=20
  title=3D"comment permalink"=20
  =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html?showComment=3D1171864560000#c7855728646889222592">February=20
  18, 2007 9:56:00 PM PST </A><SPAN=20
  class=3D"item-control blog-admin pid-1096763794"><A title=3D"Delete =
Comment"=20
  =
href=3D"http://www.blogger.com/delete-comment.g?blogID=3D4726949601275841=
816&amp;postID=3D7855728646889222592"><IMG=20
  src=3D"http://www.blogger.com/img/icon_delete13.gif"> =
</A></SPAN></SPAN></DD></DL>
<P class=3Dcomment-footer><A onclick=3D""=20
href=3D"http://www.blogger.com/comment.g?blogID=3D4726949601275841816&amp=
;postID=3D3059045496061883853">Post=20
a Comment</A> </P>
<DIV id=3Dbacklinks-container>
<DIV id=3DBlog1_backlinks-container></DIV></DIV></DIV><!-- =
google_ad_section_end --></DIV>
<DIV class=3Dblog-pager id=3Dblog-pager><SPAN =
id=3Dblog-pager-newer-link><A=20
class=3Dblog-pager-newer-link id=3DBlog1_blog-pager-newer-link =
title=3D"Newer Post"=20
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-3-of-3.html">Newer=20
Post</A> </SPAN><SPAN id=3Dblog-pager-older-link><A =
class=3Dblog-pager-older-link=20
id=3DBlog1_blog-pager-older-link title=3D"Older Post"=20
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-1.html">Older=20
Post</A> </SPAN><A class=3Dhome-link =
href=3D"http://rubythis.blogspot.com/">Home</A>=20
</DIV>
<DIV class=3Dclear></DIV>
<DIV class=3Dpost-feeds>
<DIV class=3Dfeed-links>Subscribe to: <A class=3Dfeed-link=20
href=3D"http://rubythis.blogspot.com/feeds/3059045496061883853/comments/d=
efault"=20
target=3D_blank type=3Dapplication/atom+xml>Post Comments (Atom)</A>=20
</DIV></DIV></DIV></DIV></DIV>
<DIV id=3Dsidebar-wrapper>
<DIV class=3D"sidebar section" id=3Dsidebar>
<DIV class=3D"widget HTML" id=3DHTML2>
<H2 class=3Dtitle>Syndicate</H2>
<DIV class=3Dwidget-content><A title=3D"Subscribe to my feed"=20
href=3D"http://feeds.feedburner.com/rubythis" type=3Dapplication/rss+xml =

rel=3Dalternate><IMG=20
style=3D"BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"=20
alt=3D"" =
src=3D"http://www.feedburner.com/fb/images/pub/feed-icon32x32.png"></A>=20
</DIV>
<DIV class=3Dclear></DIV><SPAN class=3Dwidget-item-control><SPAN=20
class=3D"item-control blog-admin"><A class=3Dquickedit title=3DEdit=20
onclick=3D'return =
_WidgetManager._PopupConfig(document.getElementById("HTML2"));'=20
href=3D"http://www.blogger.com/rearrange?blogID=3D4726949601275841816&amp=
;widgetType=3DHTML&amp;widgetId=3DHTML2&amp;action=3DeditWidget"=20
target=3DconfigHTML2><IMG alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_wrench_allbkg.png"> =
</A></SPAN></SPAN>
<DIV class=3Dclear></DIV></DIV>
<DIV class=3D"widget BlogArchive" id=3DBlogArchive1>
<H2>Blog Archive</H2>
<DIV class=3Dwidget-content>
<DIV id=3DArchiveList>
<DIV id=3DBlogArchive1_ArchiveList>
<UL>
  <LI class=3D"archivedate expanded"><A class=3Dtoggle=20
  =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html?widgetType=3DBlogArchive&amp;widgetId=3DBlogArchive1&amp;actio=
n=3Dtoggle&amp;dir=3Dclose&amp;toggle=3DYEARLY-1167638400000&amp;toggleop=
en=3DMONTHLY-1167638400000"><SPAN=20
  class=3D"zippy toggle-open">=E2=96=BC </SPAN></A><A =
class=3Dpost-count-link=20
  =
href=3D"http://rubythis.blogspot.com/search?updated-min=3D2007-01-01T00%3=
A00%3A00-08%3A00&amp;updated-max=3D2008-01-01T00%3A00%3A00-08%3A00&amp;ma=
x-results=3D3">2007</A>=20
  <SPAN class=3Dpost-count dir=3Dltr>(3)</SPAN>=20
  <UL>
    <LI class=3D"archivedate expanded"><A class=3Dtoggle=20
    =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html?widgetType=3DBlogArchive&amp;widgetId=3DBlogArchive1&amp;actio=
n=3Dtoggle&amp;dir=3Dclose&amp;toggle=3DMONTHLY-1167638400000&amp;toggleo=
pen=3DMONTHLY-1167638400000"><SPAN=20
    class=3D"zippy toggle-open">=E2=96=BC </SPAN></A><A =
class=3Dpost-count-link=20
    =
href=3D"http://rubythis.blogspot.com/2007_01_01_archive.html">January</A>=
=20
    <SPAN class=3Dpost-count dir=3Dltr>(3)</SPAN>=20
    <UL class=3Dposts>
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2007/01/rails-migrations-and-model-c=
hanges.html">Rails=20
      migrations and model changes</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2007/01/brain-repair-thinking-in-rub=
y-instead.html">Brain=20
      Repair: Thinking in Ruby instead of BASIC</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2007/01/ruby-now-at-number-10-on-tio=
be.html">Ruby=20
      now at number 10 on the TIOBE Programming Co...</A>=20
</LI></UL></LI></UL></LI></UL>
<UL>
  <LI class=3D"archivedate collapsed"><A class=3Dtoggle=20
  =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html?widgetType=3DBlogArchive&amp;widgetId=3DBlogArchive1&amp;actio=
n=3Dtoggle&amp;dir=3Dopen&amp;toggle=3DYEARLY-1136102400000&amp;toggleope=
n=3DMONTHLY-1167638400000"><SPAN=20
  class=3Dzippy>=E2=96=BA </SPAN></A><A class=3Dpost-count-link=20
  =
href=3D"http://rubythis.blogspot.com/search?updated-min=3D2006-01-01T00%3=
A00%3A00-08%3A00&amp;updated-max=3D2007-01-01T00%3A00%3A00-08%3A00&amp;ma=
x-results=3D20">2006</A>=20
  <SPAN class=3Dpost-count dir=3Dltr>(20)</SPAN>=20
  <UL>
    <LI class=3D"archivedate collapsed"><A class=3Dtoggle=20
    =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html?widgetType=3DBlogArchive&amp;widgetId=3DBlogArchive1&amp;actio=
n=3Dtoggle&amp;dir=3Dopen&amp;toggle=3DMONTHLY-1164960000000&amp;toggleop=
en=3DMONTHLY-1167638400000"><SPAN=20
    class=3Dzippy>=E2=96=BA </SPAN></A><A class=3Dpost-count-link=20
    =
href=3D"http://rubythis.blogspot.com/2006_12_01_archive.html">December</A=
>=20
    <SPAN class=3Dpost-count dir=3Dltr>(10)</SPAN>=20
    <UL class=3Dposts>
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/attacking-ruby-on-rails.html=
">Attacking=20
      Ruby on Rails</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/rails-web-service-gotcha-use=
-separate.html">Rails=20
      Web Service Gotcha: Use Separate Server for ...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/more-ruby-rails-trend-indica=
tors.html">More=20
      Ruby / Rails trend indicators</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/software-complexity-triangle=
.html">The=20
      Software Complexity Triangle</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-moves-up-to-11-on-tiobe=
.html">Ruby=20
      moves up to #11 on the TIOBE Programming Comm...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-3-of-3.html">Ruby=20
      on Rails Deprecations Part 3 of 3: ActionView...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html">Ruby=20
      on Rails Deprecations Part 2: ActiveRecord</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-1.html">Ruby=20
      on Rails Deprecations Part 1: ActionControlle...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/harvest-outfitters-rails-sit=
e-recently.html">Harvest=20
      Outfitters: Rails Site Recently Depoyed</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/12/justify-your-choice-of-ruby-=
on-rails.html">Justify=20
      Your Choice of Ruby on Rails: Articles and...</A> =
</LI></UL></LI></UL>
  <UL>
    <LI class=3D"archivedate collapsed"><A class=3Dtoggle=20
    =
href=3D"http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-p=
art-2.html?widgetType=3DBlogArchive&amp;widgetId=3DBlogArchive1&amp;actio=
n=3Dtoggle&amp;dir=3Dopen&amp;toggle=3DMONTHLY-1162368000000&amp;toggleop=
en=3DMONTHLY-1167638400000"><SPAN=20
    class=3Dzippy>=E2=96=BA </SPAN></A><A class=3Dpost-count-link=20
    =
href=3D"http://rubythis.blogspot.com/2006_11_01_archive.html">November</A=
>=20
    <SPAN class=3Dpost-count dir=3Dltr>(10)</SPAN>=20
    <UL class=3Dposts>
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/in-praise-of-automated-tests=
-built-in.html">In=20
      Praise of Automated Tests: A Built In Break</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/rails-security-checklist.htm=
l">Rails=20
      Security Checklist</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/ruby-on-rails-anti-pattern-p=
rimary-key.html">Ruby=20
      on Rails Anti-Pattern?: Primary Key Visibilit...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/put-away-that-hammer-use-rub=
y-fu-to-to.html">Put=20
      Away that Hammer: Use Ruby-fu to avoid unneces...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/running-with-scissors-are-yo=
u-still.html">Running=20
      with Scissors: Are you still coding withou...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/link-for-technorati.html">A =

      link for Technorati</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/using-rails-inplaceeditor-an=
d.html">Using=20
      Rails in_place_editor and in_place_editor_fi...</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/gotcha-ruby-class-variable-s=
cope-is.html">Gotcha:=20
      Ruby Class Variable Scope is Global</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/returning-multiple-results-f=
rom-ruby.html">Returning=20
      multiple results from a Ruby method</A>=20
      <LI><A=20
      =
href=3D"http://rubythis.blogspot.com/2006/11/do-you-grok-ruby-on-rails.ht=
ml">Do=20
      you grok Ruby on Rails?</A> =
</LI></UL></LI></UL></LI></UL></DIV></DIV>
<DIV class=3Dclear></DIV><SPAN class=3Dwidget-item-control><SPAN=20
class=3D"item-control blog-admin"><A class=3Dquickedit title=3DEdit=20
onclick=3D'return =
_WidgetManager._PopupConfig(document.getElementById("BlogArchive1"));'=20
href=3D"http://www.blogger.com/rearrange?blogID=3D4726949601275841816&amp=
;widgetType=3DBlogArchive&amp;widgetId=3DBlogArchive1&amp;action=3DeditWi=
dget"=20
target=3DconfigBlogArchive1><IMG alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_wrench_allbkg.png"> =
</A></SPAN></SPAN>
<DIV class=3Dclear></DIV></DIV></DIV>
<DIV class=3D"widget Label" id=3DLabel1>
<H2>Labels</H2>
<DIV class=3Dwidget-content>
<UL>
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/ActiveRecord">ActiveRec=
ord=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/AJAX">AJAX=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/deprecated">deprecated =

  </A><SPAN dir=3Dltr>(3)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/design">design=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/humor">humor=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/in_place_editor">in_pla=
ce_editor=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/in_place_editor_field">=
in_place_editor_field=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/inheritance">inheritanc=
e=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/migrations">migrations =

  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  href=3D"http://rubythis.blogspot.com/search/label/modules">modules =
</A><SPAN=20
  dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  href=3D"http://rubythis.blogspot.com/search/label/Mongrel">Mongrel =
</A><SPAN=20
  dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/performance">performanc=
e=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/preparedness">preparedn=
ess=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/project%20management">p=
roject=20
  management </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/rails">rails=20
  </A><SPAN dir=3Dltr>(8)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/rcov">rcov=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/ruby">ruby=20
  </A><SPAN dir=3Dltr>(7)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/scalability">scalabilit=
y=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  href=3D"http://rubythis.blogspot.com/search/label/security">security =
</A><SPAN=20
  dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  =
href=3D"http://rubythis.blogspot.com/search/label/software%20development"=
>software=20
  development </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  href=3D"http://rubythis.blogspot.com/search/label/testing">testing =
</A><SPAN=20
  dir=3Dltr>(3)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/trends">trends=20
  </A><SPAN dir=3Dltr>(2)</SPAN>=20
  <LI><A dir=3Dltr=20
  href=3D"http://rubythis.blogspot.com/search/label/triangle">triangle =
</A><SPAN=20
  dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr =
href=3D"http://rubythis.blogspot.com/search/label/watir">watir=20
  </A><SPAN dir=3Dltr>(1)</SPAN>=20
  <LI><A dir=3Dltr=20
  href=3D"http://rubythis.blogspot.com/search/label/web%20services">web =
services=20
  </A><SPAN dir=3Dltr>(1)</SPAN> </LI></UL>
<DIV class=3Dclear></DIV><SPAN class=3Dwidget-item-control><SPAN=20
class=3D"item-control blog-admin"><A class=3Dquickedit title=3DEdit=20
onclick=3D'return =
_WidgetManager._PopupConfig(document.getElementById("Label1"));'=20
href=3D"http://www.blogger.com/rearrange?blogID=3D4726949601275841816&amp=
;widgetType=3DLabel&amp;widgetId=3DLabel1&amp;action=3DeditWidget"=20
target=3DconfigLabel1><IMG alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_wrench_allbkg.png"> =
</A></SPAN></SPAN>
<DIV class=3Dclear></DIV></DIV></DIV>
<DIV class=3D"widget LinkList" id=3DLinkList1>
<H2>Links</H2>
<DIV class=3Dwidget-content>
<UL>
  <LI><A href=3D"http://www.codinghorror.com/blog/">Coding Horror</A>=20
  <LI><A href=3D"http://happycodr.com/">HappyCodr - Showcase of RoR =
Sites</A>=20
  <LI><A href=3D"http://www.harvestoutfitters.com/">Harvest =
Outfitters</A>=20
  <LI><A href=3D"http://www.robotuprising.com/">How to Survive a Robot=20
  Uprising</A>=20
  <LI><A href=3D"http://weblog.rubyonrails.org/">Riding Rails</A>=20
  <LI><A href=3D"http://www.rubyinside.com/">Ruby Inside</A>=20
  <LI><A href=3D"http://www.rubyonrails.org/">Ruby on Rails site</A>=20
  <LI><A href=3D"http://thedailywtf.com/Default.aspx">The Daily WTF</A>=20
  <LI><A href=3D"http://www.therailsway.com/">The Rails Way</A> =
</LI></UL>
<DIV class=3Dclear></DIV><SPAN class=3Dwidget-item-control><SPAN=20
class=3D"item-control blog-admin"><A class=3Dquickedit title=3DEdit=20
onclick=3D'return =
_WidgetManager._PopupConfig(document.getElementById("LinkList1"));'=20
href=3D"http://www.blogger.com/rearrange?blogID=3D4726949601275841816&amp=
;widgetType=3DLinkList&amp;widgetId=3DLinkList1&amp;action=3DeditWidget" =

target=3DconfigLinkList1><IMG alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_wrench_allbkg.png"> =
</A></SPAN></SPAN>
<DIV class=3Dclear></DIV></DIV></DIV></DIV></DIV><!-- spacer for skins =
that want sidebar and main to be the same height-->
<DIV class=3Dclear>&nbsp;</DIV></DIV><!-- end content-wrapper -->
<DIV id=3Dfooter-wrapper>
<DIV class=3D"footer section" id=3Dfooter>
<DIV class=3D"widget HTML" id=3DHTML1>
<DIV class=3Dwidget-content>
<SCRIPT src=3D"http://www.google-analytics.com/urchin.js"=20
type=3Dtext/javascript>=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
_uacct =3D "UA-959264-1";=0A=
urchinTracker();=0A=
</SCRIPT>
</DIV>
<DIV class=3Dclear></DIV><SPAN class=3Dwidget-item-control><SPAN=20
class=3D"item-control blog-admin"><A class=3Dquickedit title=3DEdit=20
onclick=3D'return =
_WidgetManager._PopupConfig(document.getElementById("HTML1"));'=20
href=3D"http://www.blogger.com/rearrange?blogID=3D4726949601275841816&amp=
;widgetType=3DHTML&amp;widgetId=3DHTML1&amp;action=3DeditWidget"=20
target=3DconfigHTML1><IMG alt=3D""=20
src=3D"http://www.blogger.com/img/icon18_wrench_allbkg.png"> =
</A></SPAN></SPAN>
<DIV class=3Dclear></DIV></DIV></DIV></DIV></DIV></DIV><!-- end =
outer-wrapper -->
<SCRIPT src=3D"http://www.blogger.com/widgets/3583697662-widgets.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
_WidgetManager._Init('http://www.blogger.com/rearrange?blogID=3D472694960=
1275841816', =
'http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-part-2.h=
tml','4726949601275841816');=0A=
_WidgetManager._SetPageActionUrl('http://www.blogger.com/display?blogID=3D=
4726949601275841816', 'uxUeZ5rUGsH7lygJ2p7YB5mBSuk:1208704263647');=0A=
_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'title': 'Ruby =
on Rails Development', 'pageType': 'item', 'url': =
'http://rubythis.blogspot.com/2006/12/ruby-on-rails-deprecations-part-2.h=
tml', 'homepageUrl': 'http://rubythis.blogspot.com/', 'pageTitle': 'Ruby =
on Rails Development: Ruby on Rails Deprecations Part 2: ActiveRecord', =
'encoding': 'UTF-8', 'isPrivate': false, 'languageDirection': 'ltr', =
'feedLinks': '\74link rel\75\42alternate\42 =
type\75\42application/atom+xml\42 title\75\42Ruby on Rails Development - =
Atom\42 href\75\42http://rubythis.blogspot.com/feeds/posts/default\42 =
/\76\n\74link rel\75\42alternate\42 type\75\42application/rss+xml\42 =
title\75\42Ruby on Rails Development - RSS\42 =
href\75\42http://rubythis.blogspot.com/feeds/posts/default?alt\75rss\42 =
/\76\n\74link rel\75\42service.post\42 type\75\42application/atom+xml\42 =
title\75\42Ruby on Rails Development - Atom\42 =
href\75\42http://www.blogger.com/feeds/4726949601275841816/posts/default\=
42 /\76\n\74link rel\75\42EditURI\42 type\75\42application/rsd+xml\42 =
title\75\42RSD\42 =
href\75\42http://www.blogger.com/rsd.g?blogID\0754726949601275841816\42 =
/\76\n\74link rel\75\42alternate\42 type\75\42application/atom+xml\42 =
title\75\42Ruby on Rails Development - Atom\42 =
href\75\42http://rubythis.blogspot.com/feeds/3059045496061883853/comments=
/default\42 /\76\n', 'meTag': '', 'openIdOpTag': ''}}]);=0A=
_WidgetManager._SetSystemMarkup({'layout': {'varName': '', 'template': =
'\74div class\75\47widget-wrap1\47\76\n\74div =
class\75\47widget-wrap2\47\76\n\74div =
class\75\47widget-wrap3\47\76\n\74div =
class\75\47widget-content\47\76\n\74div =
class\75\47layout-title\47\76\74data:layout-title\76\74/data:layout-title=
\76\74/div\76\n\74a class\75\47editlink\47 =
expr:href\75\47data:widget.quickEditUrl\47 =
expr:onclick\75\47\46quot;return =
_WidgetManager._PopupConfig(document.getElementById(\\\46quot;\46quot; + =
      data:widget.instanceId + \46quot;\\\46quot;));\46quot;\47 =
target\75\47chooseWidget\47\76\74data:edit-link\76\74/data:edit-link\76\7=
4/a\76\n\74/div\76\n\74/div\76\n\74/div\76\n\74/div\076'}, 'quickedit': =
{'varName': '', 'template': '\74div =
class\75\47clear\47\76\74/div\76\n\74span =
class\75\47widget-item-control\47\76\n\74span class\75\47item-control =
blog-admin\47\76\n\74a class\75\47quickedit\47 =
expr:href\75\47data:widget.quickEditUrl\47 =
expr:onclick\75\47\46quot;return =
_WidgetManager._PopupConfig(document.getElementById(\\\46quot;\46quot; + =
      data:widget.instanceId + \46quot;\\\46quot;));\46quot;\47 =
expr:target\75\47\46quot;config\46quot; + data:widget.instanceId\47 =
expr:title\75\47data:edit-link\47\76\n\74img alt\75\47\47 =
src\75\47http://www.blogger.com/img/icon18_wrench_allbkg.png\47/\76\n\74/=
a\76\n\74/span\76\n\74/span\76\n\74div =
class\75\47clear\47\76\74/div\076'}, 'all-head-content': {'varName': =
'page', 'template': '\74meta expr:content\75\47\46quot;text/html; =
charset\75\46quot; + data:page.encoding\47 =
http-equiv\75\47Content-Type\47/\76\n\74meta content\75\47true\47 =
name\75\47MSSmartTagsPreventParsing\47/\76\n\74meta =
content\75\47blogger\47 =
name\75\47generator\47/\76\n\74data:blog.feedLinks\76\74/data:blog.feedLi=
nks\76\n\74data:blog.meTag\76\74/data:blog.meTag\76\n\74data:blog.openIdO=
pTag\76\74/data:blog.openIdOpTag\76\n\74b:if =
cond\75\47data:page.isPrivate\47\76\n\74meta =
content\75\47NOINDEX,NOFOLLOW\47 =
name\75\47robots\47/\76\n\74/b:if\076'}});=0A=
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', =
'footer',{'main': {'varName': '', 'template': '\74b:if =
cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 =
class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:i=
f\76\n\74div =
class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\=
74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, =
document.getElementById('HTML1'), {}, 'displayModeFull'));=0A=
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', =
'sidebar',{'main': {'varName': '', 'template': '\74b:if =
cond\75\47data:title !\75 \46quot;\46quot;\47\76\n\74h2 =
class\75\47title\47\76\74data:title\76\74/data:title\76\74/h2\76\n\74/b:i=
f\76\n\74div =
class\75\47widget-content\47\76\n\74data:content\76\74/data:content\76\n\=
74/div\76\n\74b:include name\75\47quickedit\47\76\74/b:include\076'}}, =
document.getElementById('HTML2'), {}, 'displayModeFull'));=0A=
_WidgetManager._RegisterWidget('_BlogArchiveView', new =
_WidgetInfo('BlogArchive1', 'sidebar',{'main': {'varName': '', =
'template': '\74b:if =
cond\75\47data:title\47\76\n\74h2\76\74data:title\76\74/data:title\76\74/=
h2\76\n\74/b:if\76\n\74div class\75\47widget-content\47\76\n\74div =
id\75\47ArchiveList\47\76\n\74div expr:id\75\47data:widget.instanceId + =
\46quot;_ArchiveList\46quot;\47\76\n\74b:if cond\75\47data:style \75\75 =
\46quot;HIERARCHY\46quot;\47\76\n\74b:include data\75\47data\47 =
name\75\47interval\47\76\74/b:include\76\n\74/b:if\76\n\74b:if =
cond\75\47data:style \75\75 \46quot;FLAT\46quot;\47\76\n\74b:include =
data\75\47data\47 =
name\75\47flat\47\76\74/b:include\76\n\74/b:if\76\n\74b:if =
cond\75\47data:style \75\75 \46quot;MENU\46quot;\47\76\n\74b:include =
data\75\47data\47 =
name\75\47menu\47\76\74/b:include\76\n\74/b:if\76\n\74/div\76\n\74/div\76=
\n\74b:include name\75\47quickedit\47\76\74/b:include\76\n\74/div\076'}, =
'flat': {'varName': 'data', 'template': '\74ul\76\n\74b:loop =
values\75\47data:data\47 var\75\47i\47\76\n\74li =
class\75\47archivedate\47\76\n\74a =
expr:href\75\47data:i.url\47\76\74data:i.name\76\74/data:i.name\76\74/a\7=
6 (\74data:i.post-count\76\74/data:i.post-count\76)\n      =
\74/li\76\n\74/b:loop\76\n\74/ul\076'}, 'menu': {'varName': 'data', =
'template': '\74select expr:id\75\47data:widget.instanceId + =
\46quot;_ArchiveMenu\46quot;\47\76\n\74option =
value\75\47\47\76\74data:title\76\74/data:title\76\74/option\76\n\74b:loo=
p values\75\47data:data\47 var\75\47i\47\76\n\74option =
expr:value\75\47data:i.url\47\76\74data:i.name\76\74/data:i.name\76 =
(\74data:i.post-count\76\74/data:i.post-count\76)\74/option\76\n\74/b:loo=
p\76\n\74/select\076'}, 'interval': {'varName': 'intervalData', =
'template': '\74b:loop values\75\47data:intervalData\47 =
var\75\47i\47\76\n\74ul\76\n\74li expr:class\75\47\46quot;archivedate =
\46quot; + data:i.expclass\47\76\n\74b:include data\75\47i\47 =
name\75\47toggle\47\76\74/b:include\76\n\74a =
class\75\47post-count-link\47 =
expr:href\75\47data:i.url\47\76\74data:i.name\76\74/data:i.name\76\74/a\7=
6\n\74span class\75\47post-count\47 =
dir\75\47ltr\47\76(\74data:i.post-count\76\74/data:i.post-count\76)\74/sp=
an\76\n\74b:if cond\75\47data:i.data\47\76\n\74b:include =
data\75\47i.data\47 =
name\75\47interval\47\76\74/b:include\76\n\74/b:if\76\n\74b:if =
cond\75\47data:i.posts\47\76\n\74b:include data\75\47i.posts\47 =
name\75\47posts\47\76\74/b:include\76\n\74/b:if\76\n\74/li\76\n\74/ul\76\=
n\74/b:loop\076'}, 'toggle': {'varName': 'interval', 'template': =
'\74b:if cond\75\47data:interval.toggleId\47\76\n\74b:if =
cond\75\47data:interval.expclass \75\75 =
\46quot;expanded\46quot;\47\76\n\74a class\75\47toggle\47 =
expr:href\75\47data:widget.actionUrl + =
\46quot;\46amp;action\75toggle\46quot; +       =
\46quot;\46amp;dir\75close\46amp;toggle\75\46quot; + =
data:interval.toggleId +       \46quot;\46amp;toggleopen\75\46quot; + =
data:toggleopen\47\76\n\74span class\75\47zippy =
toggle-open\47\76\46#9660; =
\74/span\76\n\74/a\76\n\74b:else\76\74/b:else\76\n\74a =
class\75\47toggle\47 expr:href\75\47data:widget.actionUrl + =
\46quot;\46amp;action\75toggle\46quot; +         =
\46quot;\46amp;dir\75open\46amp;toggle\75\46quot; + =
data:interval.toggleId +         \46quot;\46amp;toggleopen\75\46quot; + =
data:toggleopen\47\76\n\74span class\75\47zippy\47\76\n\74b:if =
cond\75\47data:blog.languageDirection \75\75 \46quot;rtl\46quot;\47\76\n =
             \46#9668;\n            \74b:else\76\74/b:else\76\n          =
    \46#9658;\n            =
\74/b:if\76\n\74/span\76\n\74/a\76\n\74/b:if\76\n\74/b:if\076'}, =
'posts': {'varName': 'posts', 'template': '\74ul =
class\75\47posts\47\76\n\74b:loop values\75\47data:posts\47 =
var\75\47i\47\76\n\74li\76\74a =
expr:href\75\47data:i.url\47\76\74data:i.title\76\74/data:i.title\76\74/a=
\76\74/li\76\n\74/b:loop\76\n\74/ul\076'}}, =
document.getElementById('BlogArchive1'), {'languageDirection': 'ltr'}, =
'displayModeFull'));=0A=
_WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', =
'sidebar',{'main': {'varName': '', 'template': '\74b:if =
cond\75\47data:title\47\76\n\74h2\76\74data:title\76\74/data:title\76\74/=
h2\76\n\74/b:if\76\n\74div =
class\75\47widget-content\47\76\n\74ul\76\n\74b:loop =
values\75\47data:labels\47 var\75\47label\47\76\n\74li\76\n\74b:if =
cond\75\47data:blog.url \75\75 data:label.url\47\76\n\74span =
expr:dir\75\47data:blog.languageDirection\47\76\n\74data:label.name\76\74=
/data:label.name\76\n\74/span\76\n\74b:else\76\74/b:else\76\n\74a =
expr:dir\75\47data:blog.languageDirection\47 =
expr:href\75\47data:label.url\47\76\n\74data:label.name\76\74/data:label.=
name\76\n\74/a\76\n\74/b:if\76\n\74span =
dir\75\47ltr\47\76(\74data:label.count\76\74/data:label.count\76)\74/span=
\76\n\74/li\76\n\74/b:loop\76\n\74/ul\76\n\74b:include =
name\75\47quickedit\47\76\74/b:include\76\n\74/div\076'}}, =
document.getElementById('Label1'), {}, 'displayModeFull'));=0A=
_WidgetManager._RegisterWidget('_LinkListView', new =
_WidgetInfo('LinkList1', 'sidebar',{'main': {'varName': '', 'template': =
'\74b:if =
cond\75\47data:title\47\76\74h2\76\74data:title\76\74/data:title\76\74/h2=
\76\74/b:if\76\n\74div =
class\75\47widget-content\47\76\n\74ul\76\n\74b:loop =
values\75\47data:links\47 var\75\47link\47\76\n\74li\76\74a =
expr:href\75\47data:link.target\47\76\74data:link.name\76\74/data:link.na=
me\76\74/a\76\74/li\76\n\74/b:loop\76\n\74/ul\76\n\74b:include =
name\75\47quickedit\47\76\74/b:include\76\n\74/div\076'}}, =
document.getElementById('LinkList1'), {}, 'displayModeFull'));=0A=
_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', =
'header'));=0A=
_WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', =
'navbar'));=0A=
_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', =
'main',{'main': {'varName': 'top', 'template': '\74div =
class\75\47blog-posts hfeed\47\76\n\74b:include data\75\47top\47 =
name\75\47status-message\47\76\74/b:include\76\n\74data:adStart\76\74/dat=
a:adStart\76\n\74b:loop values\75\47data:posts\47 =
var\75\47post\47\76\n\74b:if cond\75\47data:post.dateHeader\47\76\n\74h2 =
class\75\47date-header\47\76\74data:post.dateHeader\76\74/data:post.dateH=
eader\76\74/h2\76\n\74/b:if\76\n\74b:include data\75\47post\47 =
name\75\47post\47\76\74/b:include\76\n\74b:if =
cond\75\47data:blog.pageType \75\75 =
\46quot;item\46quot;\47\76\n\74b:include data\75\47post\47 =
name\75\47comments\47\76\74/b:include\76\n\74/b:if\76\n\74b:if =
cond\75\47data:post.includeAd\47\76\n\74data:adEnd\76\74/data:adEnd\76\n\=
74data:adCode\76\74/data:adCode\76\n\74data:adStart\76\74/data:adStart\76=
\n\74/b:if\76\n\74/b:loop\76\n\74data:adEnd\76\74/data:adEnd\76\n\74/div\=
76\n\74b:include name\75\47nextprev\47\76\74/b:include\76\n\74b:include =
name\75\47feedLinks\47\76\74/b:include\076'}, 'nextprev': {'varName': =
'', 'template': '\74div class\75\47blog-pager\47 =
id\75\47blog-pager\47\76\n\74b:if =
cond\75\47data:newerPageUrl\47\76\n\74span =
id\75\47blog-pager-newer-link\47\76\n\74a =
class\75\47blog-pager-newer-link\47 expr:href\75\47data:newerPageUrl\47 =
expr:id\75\47data:widget.instanceId + =
\46quot;_blog-pager-newer-link\46quot;\47 =
expr:title\75\47data:newerPageTitle\47\76\74data:newerPageTitle\76\74/dat=
a:newerPageTitle\76\74/a\76\n\74/span\76\n\74/b:if\76\n\74b:if =
cond\75\47data:olderPageUrl\47\76\n\74span =
id\75\47blog-pager-older-link\47\76\n\74a =
class\75\47blog-pager-older-link\47 expr:href\75\47data:olderPageUrl\47 =
expr:id\75\47data:widget.instanceId + =
\46quot;_blog-pager-older-link\46quot;\47 =
expr:title\75\47data:olderPageTitle\47\76\74data:olderPageTitle\76\74/dat=
a:olderPageTitle\76\74/a\76\n\74/span\76\n\74/b:if\76\n\74b:if =
cond\75\47data:blog.homepageUrl !\75 data:blog.url\47\76\n\74a =
class\75\47home-link\47 =
expr:href\75\47data:blog.homepageUrl\47\76\74data:homeMsg\76\74/data:home=
Msg\76\74/a\76\n\74b:else\76\74/b:else\76\n\74b:if =
cond\75\47data:newerPageUrl\47\76\n\74a class\75\47home-link\47 =
expr:href\75\47data:blog.homepageUrl\47\76\74data:homeMsg\76\74/data:home=
Msg\76\74/a\76\n\74/b:if\76\n\74/b:if\76\n\74/div\76\n\74div =
class\75\47clear\47\76\74/div\076'}, 'post': {'varName': 'post', =
'template': '\74div class\75\47post hentry =
uncustomized-post-template\47\76\n\74a =
expr:name\75\47data:post.id\47\76\74/a\76\n\74b:if =
cond\75\47data:post.title\47\76\n\74h3 class\75\47post-title =
entry-title\47\76\n\74b:if cond\75\47data:post.link\47\76\n\74a =
expr:href\75\47data:post.link\47\76\74data:post.title\76\74/data:post.tit=
le\76\74/a\76\n\74b:else\76\74/b:else\76\n\74b:if =
cond\75\47data:post.url\47\76\n\74a =
expr:href\75\47data:post.url\47\76\74data:post.title\76\74/data:post.titl=
e\76\74/a\76\n\74b:else\76\74/b:else\76\n\74data:post.title\76\74/data:po=
st.title\76\n\74/b:if\76\n\74/b:if\76\n\74/h3\76\n\74/b:if\76\n\74div =
class\75\47post-header-line-1\47\76\74/div\76\n\74div =
class\75\47post-body =
entry-content\47\76\n\74p\76\74data:post.body\76\74/data:post.body\76\74/=
p\76\n\74div style\75\47clear: both;\47\76\74/div\76\n\74/div\76\n\74div =
class\75\47post-footer\47\76\n\74div class\75\47post-footer-line =
post-footer-line-1\47\76\n\74span class\75\47post-author =
vcard\47\76\n\74b:if =
cond\75\47data:top.showAuthor\47\76\n\74data:top.authorLabel\76\74/data:t=
op.authorLabel\76\n\74span =
class\75\47fn\47\76\74data:post.author\76\74/data:post.author\76\74/span\=
76\n\74/b:if\76\n\74/span\76\n\74span =
class\75\47post-timestamp\47\76\n\74b:if =
cond\75\47data:top.showTimestamp\47\76\n\74data:top.timestampLabel\76\74/=
data:top.timestampLabel\76\n\74b:if cond\75\47data:post.url\47\76\n\74a =
class\75\47timestamp-link\47 expr:href\75\47data:post.url\47 =
rel\75\47bookmark\47 title\75\47permanent link\47\76\74abbr =
class\75\47published\47 =
expr:title\75\47data:post.timestampISO8601\47\76\74data:post.timestamp\76=
\74/data:post.timestamp\76\74/abbr\76\74/a\76\n\74/b:if\76\n\74/b:if\76\n=
\74/span\76\n\74span class\75\47post-comment-link\47\76\n\74b:if =
cond\75\47data:blog.pageType !\75 \46quot;item\46quot;\47\76\n\74b:if =
cond\75\47data:post.allowComments\47\76\n\74a class\75\47comment-link\47 =
expr:href\75\47data:post.addCommentUrl\47 =
expr:onclick\75\47data:post.addCommentOnclick\47\76\74b:if =
cond\75\47data:post.numComments \75\75 1\47\0761 =
\74data:top.commentLabel\76\74/data:top.commentLabel\76\74b:else\76\74/b:=
else\76\74data:post.numComments\76\74/data:post.numComments\76\n\74data:t=
op.commentLabelPlural\76\74/data:top.commentLabelPlural\76\74/b:if\76\74/=
a\76\n\74/b:if\76\n\74/b:if\76\n\74/span\76\n\74span =
class\75\47post-backlinks post-comment-link\47\76\n\74b:if =
cond\75\47data:blog.pageType !\75 \46quot;item\46quot;\47\76\n\74b:if =
cond\75\47data:post.showBacklinks\47\76\n\74a class\75\47comment-link\47 =
expr:href\75\47data:post.url + =
\46quot;#links\46quot;\47\76\74data:top.backlinkLabel\76\74/data:top.back=
linkLabel\76\74/a\76\n\74/b:if\76\n\74/b:if\76\n\74/span\76\n\74span =
class\75\47post-icons\47\76\n\74b:if =
cond\75\47data:post.emailPostUrl\47\76\n\74span =
class\75\47item-action\47\76\n\74a =
expr:href\75\47data:post.emailPostUrl\47 =
expr:title\75\47data:top.emailPostMsg\47\76\n\74img alt\75\47\47 =
class\75\47icon-action\47 =
src\75\47http://www.blogger.com/img/icon18_email.gif\47/\76\n\74/a\76\n\7=
4/span\76\n\74/b:if\76\n\74b:include data\75\47post\47 =
name\75\47postQuickEdit\47\76\74/b:include\76\n\74/span\76\n\74/div\76\n\=
74div class\75\47post-footer-line post-footer-line-2\47\76\n\74span =
class\75\47post-labels\47\76\n\74b:if =
cond\75\47data:post.labels\47\76\n\74data:postLabelsLabel\76\74/data:post=
LabelsLabel\76\n\74b:loop values\75\47data:post.labels\47 =
var\75\47label\47\76\n\74a expr:href\75\47data:label.url\47 =
rel\75\47tag\47\76\74data:label.name\76\74/data:label.name\76\74/a\76\74b=
:if cond\75\47data:label.isLast !\75 =
\46quot;true\46quot;\47\76,\74/b:if\76\n\74/b:loop\76\n\74/b:if\76\n\74/s=
pan\76\n\74/div\76\n\74div class\75\47post-footer-line =
post-footer-line-3\47\76\74/div\76\n\74/div\76\n\74/div\076'}, =
'postQuickEdit': {'varName': 'post', 'template': '\74b:if =
cond\75\47data:post.editUrl\47\76\n\74span =
expr:class\75\47\46quot;item-control \46quot; + =
data:post.adminClass\47\76\n\74a expr:href\75\47data:post.editUrl\47 =
expr:title\75\47data:top.editPostMsg\47\76\n\74img alt\75\47\47 =
class\75\47icon-action\47 =
src\75\47http://www.blogger.com/img/icon18_edit_allbkg.gif\47/\76\n\74/a\=
76\n\74/span\76\n\74/b:if\076'}, 'commentDeleteIcon': {'varName': =
'comment', 'template': '\74span expr:class\75\47\46quot;item-control =
\46quot; + data:comment.adminClass\47\76\n\74a =
expr:href\75\47data:comment.deleteUrl\47 =
expr:title\75\47data:top.deleteCommentMsg\47\76\n\74img =
src\75\47http://www.blogger.com/img/icon_delete13.gif\47/\76\n\74/a\76\n\=
74/span\076'}, 'backlinkDeleteIcon': {'varName': 'backlink', 'template': =
'\74span expr:class\75\47\46quot;item-control \46quot; + =
data:backlink.adminClass\47\76\n\74a =
expr:href\75\47data:backlink.deleteUrl\47 =
expr:title\75\47data:top.deleteBacklinkMsg\47\76\n\74img =
src\75\47http://www.blogger.com/img/icon_delete13.gif\47/\76\n\74/a\76\n\=
74/span\076'}, 'comments': {'varName': 'post', 'template': '\74div =
class\75\47comments\47 id\75\47comments\47\76\n\74a =
name\75\47comments\47\76\74/a\76\n\74b:if =
cond\75\47data:post.allowComments\47\76\n\74h4\76\n\74b:if =
cond\75\47data:post.numComments \75\75 1\47\76\n          1 =
\74data:commentLabel\76\74/data:commentLabel\76:\n        =
\74b:else\76\74/b:else\76\n\74data:post.numComments\76\74/data:post.numCo=
mments\76\n\74data:commentLabelPlural\76\74/data:commentLabelPlural\76:\n=
        \74/b:if\76\n\74/h4\76\n\74b:if =
cond\75\47data:post.commentPagingRequired\47\76\n\74span =
class\75\47paging-control-container\47\76\n\74a =
expr:class\75\47data:post.oldLinkClass\47 =
expr:href\75\47data:post.oldestLinkUrl\47\76\74data:post.oldestLinkText\7=
6\74/data:post.oldestLinkText\76\74/a\76\n          \46#160;\n          =
\74a expr:class\75\47data:post.oldLinkClass\47 =
expr:href\75\47data:post.olderLinkUrl\47\76\74data:post.olderLinkText\76\=
74/data:post.olderLinkText\76\74/a\76\n          \46#160;\n          =
\74data:post.commentRangeText\76\74/data:post.commentRangeText\76\n      =
    \46#160;\n          \74a expr:class\75\47data:post.newLinkClass\47 =
expr:href\75\47data:post.newerLinkUrl\47\76\74data:post.newerLinkText\76\=
74/data:post.newerLinkText\76\74/a\76\n          \46#160;\n          =
\74a expr:class\75\47data:post.newLinkClass\47 =
expr:href\75\47data:post.newestLinkUrl\47\76\74data:post.newestLinkText\7=
6\74/data:post.newestLinkText\76\74/a\76\n\74/span\76\n\74/b:if\76\n\74dl=
 id\75\47comments-block\47\76\n\74b:loop =
values\75\47data:post.comments\47 var\75\47comment\47\76\n\74dt =
expr:class\75\47\46quot;comment-author \46quot; + =
data:comment.authorClass\47 =
expr:id\75\47data:comment.anchorName\47\76\n\74a =
expr:name\75\47data:comment.anchorName\47\76\74/a\76\n\74b:if =
cond\75\47data:comment.authorUrl\47\76\n\74a =
expr:href\75\47data:comment.authorUrl\47 =
rel\75\47nofollow\47\76\74data:comment.author\76\74/data:comment.author\7=
6\74/a\76\n\74b:else\76\74/b:else\76\n\74data:comment.author\76\74/data:c=
omment.author\76\n\74/b:if\76\n\74data:commentPostedByMsg\76\74/data:comm=
entPostedByMsg\76\n\74/dt\76\n\74dd =
class\75\47comment-body\47\76\n\74b:if =
cond\75\47data:comment.isDeleted\47\76\n\74span =
class\75\47deleted-comment\47\76\74data:comment.body\76\74/data:comment.b=
ody\76\74/span\76\n\74b:else\76\74/b:else\76\n\74p\76\74data:comment.body=
\76\74/data:comment.body\76\74/p\76\n\74/b:if\76\n\74/dd\76\n\74dd =
class\75\47comment-footer\47\76\n\74span =
class\75\47comment-timestamp\47\76\n\74a =
expr:href\75\47data:comment.url\47 title\75\47comment =
permalink\47\76\n\74data:comment.timestamp\76\74/data:comment.timestamp\7=
6\n\74/a\76\n\74b:include data\75\47comment\47 =
name\75\47commentDeleteIcon\47\76\74/b:include\76\n\74/span\76\n\74/dd\76=
\n\74/b:loop\76\n\74/dl\76\n\74b:if =
cond\75\47data:post.commentPagingRequired\47\76\n\74span =
class\75\47paging-control-container\47\76\n\74a =
expr:class\75\47data:post.oldLinkClass\47 =
expr:href\75\47data:post.oldestLinkUrl\47\76\n\74data:post.oldestLinkText=
\76\74/data:post.oldestLinkText\76\n\74/a\76\n\74a =
expr:class\75\47data:post.oldLinkClass\47 =
expr:href\75\47data:post.olderLinkUrl\47\76\n\74data:post.olderLinkText\7=
6\74/data:post.olderLinkText\76\n\74/a\76\n          \46#160;\n          =
\74data:post.commentRangeText\76\74/data:post.commentRangeText\76\n      =
    \46#160;\n          \74a expr:class\75\47data:post.newLinkClass\47 =
expr:href\75\47data:post.newerLinkUrl\47\76\n\74data:post.newerLinkText\7=
6\74/data:post.newerLinkText\76\n\74/a\76\n\74a =
expr:class\75\47data:post.newLinkClass\47 =
expr:href\75\47data:post.newestLinkUrl\47\76\n\74data:post.newestLinkText=
\76\74/data:post.newestLinkText\76\n\74/a\76\n\74/span\76\n\74/b:if\76\n\=
74p class\75\47comment-footer\47\76\n\74a =
expr:href\75\47data:post.addCommentUrl\47 =
expr:onclick\75\47data:post.addCommentOnclick\47\76\74data:postCommentMsg=
\76\74/data:postCommentMsg\76\74/a\76\n\74/p\76\n\74/b:if\76\n\74div =
id\75\47backlinks-container\47\76\n\74div =
expr:id\75\47data:widget.instanceId + =
\46quot;_backlinks-container\46quot;\47\76\n\74b:if =
cond\75\47data:post.showBacklinks\47\76\n\74b:include data\75\47post\47 =
name\75\47backlinks\47\76\74/b:include\76\n\74/b:if\76\n\74/div\76\n\74/d=
iv\76\n\74/div\076'}, 'backlinks': {'varName': 'post', 'template': '\74a =
name\75\47links\47\76\74/a\76\74h4\76\74data:post.backlinksLabel\76\74/da=
ta:post.backlinksLabel\76\74/h4\76\n\74b:if =
cond\75\47data:post.numBacklinks !\75 0\47\76\n\74dl =
class\75\47comments-block\47 id\75\47comments-block\47\76\n\74b:loop =
values\75\47data:post.backlinks\47 var\75\47backlink\47\76\n\74div =
class\75\47collapsed-backlink backlink-control\47\76\n\74dt =
class\75\47comment-title\47\76\n\74span =
class\75\47backlink-toggle-zippy\47\76\46#160;\74/span\76\n\74a =
expr:href\75\47data:backlink.url\47 =
rel\75\47nofollow\47\76\74data:backlink.title\76\74/data:backlink.title\7=
6\74/a\76\n\74b:include data\75\47backlink\47 =
name\75\47backlinkDeleteIcon\47\76\74/b:include\76\n\74/dt\76\n\74dd =
class\75\47comment-body =
collapseable\47\76\n\74data:backlink.snippet\76\74/data:backlink.snippet\=
76\n\74/dd\76\n\74dd class\75\47comment-footer =
collapseable\47\76\n\74span =
class\75\47comment-author\47\76\74data:post.authorLabel\76\74/data:post.a=
uthorLabel\76\n\74data:backlink.author\76\74/data:backlink.author\76\74/s=
pan\76\n\74span =
class\75\47comment-timestamp\47\76\74data:post.timestampLabel\76\74/data:=
post.timestampLabel\76\n\74data:backlink.timestamp\76\74/data:backlink.ti=
mestamp\76\74/span\76\n\74/dd\76\n\74/div\76\n\74/b:loop\76\n\74/dl\76\n\=
74/b:if\76\n\74p class\75\47comment-footer\47\76\n\74a =
class\75\47comment-link\47 expr:href\75\47data:post.createLinkUrl\47 =
expr:id\75\47data:widget.instanceId + =
\46quot;_backlinks-create-link\46quot;\47 =
target\75\47_blank\47\76\74data:post.createLinkLabel\76\74/data:post.crea=
teLinkLabel\76\74/a\76\n\74/p\076'}, 'feedLinks': {'varName': '', =
'template': '\74b:if cond\75\47data:blog.pageType !\75 =
\46quot;item\46quot;\47\76\n\74b:if =
cond\75\47data:feedLinks\47\76\n\74div =
class\75\47blog-feeds\47\76\n\74b:include data\75\47feedLinks\47 =
name\75\47feedLinksBody\47\76\74/b:include\76\n\74/div\76\n\74/b:if\76\n\=
74b:else\76\74/b:else\76\n\74div class\75\47post-feeds\47\76\n\74b:loop =
values\75\47data:posts\47 var\75\47post\47\76\n\74b:if =
cond\75\47data:post.allowComments\47\76\n\74b:if =
cond\75\47data:post.feedLinks\47\76\n\74b:include =
data\75\47post.feedLinks\47 =
name\75\47feedLinksBody\47\76\74/b:include\76\n\74/b:if\76\n\74/b:if\76\n=
\74/b:loop\76\n\74/div\76\n\74/b:if\076'}, 'feedLinksBody': {'varName': =
'links', 'template': '\74div =
class\75\47feed-links\47\76\n\74data:feedLinksMsg\76\74/data:feedLinksMsg=
\76\n\74b:loop values\75\47data:links\47 var\75\47f\47\76\n\74a =
class\75\47feed-link\47 expr:href\75\47data:f.url\47 =
expr:type\75\47data:f.mimeType\47 =
target\75\47_blank\47\76\74data:f.name\76\74/data:f.name\76 =
(\74data:f.feedType\76\74/data:f.feedType\76)\74/a\76\n\74/b:loop\76\n\74=
/div\076'}, 'status-message': {'varName': '', 'template': '\74b:if =
cond\75\47data:navMessage\47\76\n\74div =
class\75\47status-msg-wrap\47\76\n\74div =
class\75\47status-msg-body\47\76\n\74data:navMessage\76\74/data:navMessag=
e\76\n\74/div\76\n\74div class\75\47status-msg-border\47\76\n\74div =
class\75\47status-msg-bg\47\76\n\74div =
class\75\47status-msg-hidden\47\76\74data:navMessage\76\74/data:navMessag=
e\76\74/div\76\n\74/div\76\n\74/div\76\n\74/div\76\n\74div =
style\75\47clear: both;\47\76\74/div\76\n\74/b:if\076'}}, =
document.getElementById('Blog1'), {}, 'displayModeFull'));=0A=
</SCRIPT>
</BODY></HTML>

------=_NextPart_001_003A_01C8A309.BB7CF1A0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/navbar.g?targetBlogID=4726949601275841816&blogName=Ruby+on+Rails+Development&publishMode=PUBLISH_MODE_BLOGSPOT&navbarType=BLUE&layoutType=LAYOUTS&homepageUrl=http%3A%2F%2Frubythis.blogspot.com%2F&searchRoot=http%3A%2F%2Frubythis.blogspot.com%2Fsearch

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML dir=3Dltr><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dutf-8"><LINK=20
href=3D"http://www.blogger.com/v-css/navbar/3328360018-navbar.css" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK =
href=3D"http://www.blogger.com/v-css/navbar/1297325411-1.css"=20
type=3Dtext/css rel=3Dstylesheet>
<META content=3D"MSHTML 6.00.6000.16640" name=3DGENERATOR></HEAD>
<BODY>
<SCRIPT src=3D"http://www.blogger.com/v-js/3625575137-cookies.common.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.blogger.com/v-app/scripts/1019856700-common.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.blogger.com/v-app/scripts/107652916-dom.common.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
=0A=
  =0A=
   var ID =3D "4726949601275841816";=0A=
   var FLAG_COOKIE_NAME =3D 'flaggedBlog';=0A=
   var MAX_FLAGGED_BLOGS =3D 10;=0A=
   var FLAG_BLOG_URL =3D "http://www.blogger.com" +=0A=
                       "/flag-blog.g?nav=3D" +=0A=
                       "1" +=0A=
                       "&toFlag=3D" + ID;=0A=
   var UNFLAG_BLOG_URL =3D "http://www.blogger.com" +=0A=
                       "/unflag-blog.g?nav=3D" +=0A=
                       "1" +=0A=
                       "&toFlag=3D" + ID;=0A=
=0A=
   var ncHasFlagged =3D false;=0A=
   var servletTarget =3D new Image();=0A=
=0A=
  =0A=
  function hasFlagged() {=0A=
    if (getCookie(FLAG_COOKIE_NAME)) {=0A=
      var bloglist =3D getCookie(FLAG_COOKIE_NAME);=0A=
      var blogarray =3D bloglist.split(",")=0A=
      if (FindInArray(blogarray, ID) > 0) {=0A=
        return true;=0A=
      }=0A=
    }=0A=
    return ncHasFlagged;=0A=
  }=0A=
  =0A=
=0A=
  function toggleFlag() {=0A=
    var date =3D new Date();=0A=
    var flagBtn =3D document.getElementById('b-flag-this');=0A=
=0A=
    if (hasFlagged()) {=0A=
      removeBlogFromFlagCookie();=0A=
      servletTarget.src =3D UNFLAG_BLOG_URL + '&d=3D' + date.getTime();=0A=
=0A=
      RemoveClass(flagBtn, 'flagged');=0A=
      ncHasFlagged =3D false;=0A=
    } else {=0A=
      setBloggerFlagCookie();=0A=
      servletTarget.src =3D FLAG_BLOG_URL + '&d=3D' + date.getTime();=0A=
=0A=
      AddClass(flagBtn, 'flagged');=0A=
      ncHasFlagged =3D true;=0A=
    }=0A=
=0A=
    refreshDrop();=0A=
  }=0A=
=0A=
  =0A=
  function showDrop() {=0A=
   var overlap =3D 5;=0A=
   var dropdown_position =3D=0A=
     GetPageOffsetRight(document.getElementById('b-flag-this')) - =
overlap + "px";=0A=
=0A=
   document.getElementById('unflagi').style.display =3D 'none';=0A=
   document.getElementById('flagi').style.display =3D 'none';=0A=
=0A=
   if (!hasFlagged()) {=0A=
      document.getElementById('flagi').style.display =3D 'inline';=0A=
      document.getElementById('flagi').style.left =3D dropdown_position;=0A=
      showElement(document.getElementById('flagi'));=0A=
    } else {=0A=
      document.getElementById('unflagi').style.display =3D 'inline';=0A=
      document.getElementById('unflagi').style.left =3D =
dropdown_position;=0A=
      showElement(document.getElementById('unflagi'));=0A=
    }=0A=
  }=0A=
=0A=
  =0A=
  function hideDrop() {=0A=
      hideElement(document.getElementById('flagi'));=0A=
      hideElement(document.getElementById('unflagi'));=0A=
  }=0A=
=0A=
  =0A=
  function refreshDrop() {=0A=
    hideDrop();=0A=
    showDrop();=0A=
  }=0A=
=0A=
  =0A=
  function setBloggerFlagCookie() {=0A=
    var bloglist =3D ""=0A=
    if (getCookie(FLAG_COOKIE_NAME)) {=0A=
      bloglist =3D getCookie(FLAG_COOKIE_NAME)=0A=
      var blogarray =3D bloglist.split(",")=0A=
      if (blogarray.length >=3D MAX_FLAGGED_BLOGS) {=0A=
        blogarray.shift()=0A=
      }=0A=
      InsertArray(blogarray, ID)=0A=
      bloglist =3D blogarray.toString();=0A=
    } else {=0A=
      bloglist =3D ID=0A=
    }=0A=
    setCookie(FLAG_COOKIE_NAME, bloglist, null, null, '/', null)=0A=
   }=0A=
=0A=
  =0A=
  function removeBlogFromFlagCookie(){=0A=
    if (getCookie(FLAG_COOKIE_NAME)) {=0A=
      var bloglist =3D getCookie(FLAG_COOKIE_NAME);=0A=
      var blogarray =3D bloglist.split(",")=0A=
      if (FindInArray(blogarray, ID) > 0) {=0A=
        DeleteArrayElement(blogarray, ID)=0A=
        bloglist =3D blogarray.toString();=0A=
      }=0A=
      setCookie(FLAG_COOKIE_NAME, bloglist, null, null, '/', null);=0A=
    }=0A=
  }=0A=
  =0A=
=0A=
  </SCRIPT>

<DIV id=3Dflagi onmouseover=3DshowDrop() style=3D"POSITION: absolute"=20
onmouseout=3DhideDrop();>Stel blogger op de hoogte van <A=20
href=3D"http://help.blogger.com/bin/answer.py?answer=3D42517"=20
target=3D_blank>bezwaarlijke inhoud</A> op deze pagina.</DIV>
<DIV id=3Dunflagi onmouseover=3DshowDrop() style=3D"POSITION: absolute"=20
onmouseout=3DhideDrop()>U heeft deze blog gemarkeerd als <A=20
href=3D"http://help.blogger.com/bin/answer.py?answer=3D42517"=20
target=3D_blank>bezwaarlijke inhoud</A>.</DIV>
<DIV id=3Db-navbar><A id=3Db-logo title=3D"Ga naar Blogger.com" =
tabIndex=3D1=20
href=3D"http://www.blogger.com/">
<DIV id=3Dnavbar-logo><SPAN>Blogger</SPAN></DIV></A>
<DIV class=3Db-mobile id=3Db-sms><A tabIndex=3D2=20
href=3D"sms:?body=3DMoet%20je%20Ruby%20on%20Rails%20Development%20eens%20=
zien%20op%20http%3A%2F%2Frubythis.blogspot.com%2F">Als=20
SMS verzenden</A></DIV>
<DIV id=3Db-search>
<TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
  <TBODY>
  <TR>
    <TD class=3Dnavsearch vAlign=3Dcenter noWrap>
      <FORM id=3Dsearchthis style=3D"DISPLAY: inline"=20
      action=3Dhttp://rubythis.blogspot.com/search method=3Dget>
      <TABLE cellSpacing=3D0 cellPadding=3D0>
        <TBODY>
        <TR>
          <TD vAlign=3Dcenter><INPUT id=3Db-query title=3D"Blog zoeken" =
tabIndex=3D3=20
            name=3Dq></TD>
          <TD class=3Dnavbutton vAlign=3Dcenter><NOSCRIPT><INPUT =
id=3Db-searchbtn=20
            title=3D"Zoeken in deze blog" tabIndex=3D4 type=3Dimage=20
            alt=3D"Zoeken in deze blog"=20
            =
src=3D"http://www.blogger.com/img/navbar/1/btn_search_this.png"></NOSCRIP=
T>
            <SCRIPT type=3Dtext/javascript>=0A=
  document.write("\74div id\75\42b-search-this\42 class\75\42btn\42 =
onclick\75\42document.getElementById(\47searchthis\47).submit()\42 =
tabindex\75\0424\42\76\74div\76Blog zoeken\74/div\76\74/div\076");=0A=
</SCRIPT>
             </TD>
          <TD class=3Dnavbutton vAlign=3Dcenter>
            <SCRIPT type=3Dtext/javascript>=0A=
  document.write("\74div id\75\42b-flag-this\42 class\75\42btn\42 =
onclick\75\42toggleFlag();\42 onmouseover\75\42showDrop()\42 =
onmouseout\75\42hideDrop()\42 tabindex\75\0425\42\76\74div =
id\75\42bt-flag-body\42\76\74img class\75\42flag\42 alt\75\42\42 =
src\75\42http://www.blogger.com/img/navbar/1/flag.gif\42\76\nBlog =
markeren\74/div\76\n\74div id\75\42bt-unflag-body\42\76\74img =
class\75\42flag\42 alt\75\42\42 =
src\75\42http://www.blogger.com/img/navbar/1/unflag.gif\42\76\nBlogmarker=
ing verwijderen\74/div\76\74/div\076");=0A=
</SCRIPT>
          </TD></TR></TBODY></TABLE></FORM></TD>
    <TD vAlign=3Dcenter noWrap width=3D"100%"><A id=3Db-next =
tabIndex=3D6=20
      href=3D"http://www.blogger.com/next-blog?navBar=3Dtrue">Volgende =
blog=C2=BB</A></TD>
    <TD class=3Dnavbar-right vAlign=3Dcenter noWrap align=3Dright><A =
id=3Db-getorpost=20
      tabIndex=3D7 href=3D"http://www.blogger.com/signup.g">Blog =
maken</A> | <A=20
      tabIndex=3D8=20
href=3D"http://www.blogger.com/">Aanmelden</A></TD></TR></TBODY></TABLE><=
/DIV></DIV></BODY></HTML>

------=_NextPart_001_003A_01C8A309.BB7CF1A0--

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.google-analytics.com/urchin.js

//-- Google Analytics Urchin Module=0A=
//-- Copyright 2007 Google, All Rights Reserved.=0A=
=0A=
//-- Urchin On Demand Settings ONLY=0A=
var _uacct=3D"";			// set up the Urchin Account=0A=
var _userv=3D1;			// service mode (0=3Dlocal,1=3Dremote,2=3Dboth)=0A=
=0A=
//-- UTM User Settings=0A=
var _ufsc=3D1;			// set client info flag (1=3Don|0=3Doff)=0A=
var _udn=3D"auto";		// (auto|none|domain) set the domain name for cookies=0A=
var _uhash=3D"on";		// (on|off) unique domain hash for cookies=0A=
var _utimeout=3D"1800";   	// set the inactive session timeout in seconds=0A=
var _ugifpath=3D"/__utm.gif";	// set the web path to the __utm.gif file=0A=
var _utsp=3D"|";			// transaction field separator=0A=
var _uflash=3D1;			// set flash version detect option (1=3Don|0=3Doff)=0A=
var _utitle=3D1;			// set the document title detect option =
(1=3Don|0=3Doff)=0A=
var _ulink=3D0;			// enable linker functionality (1=3Don|0=3Doff)=0A=
var _uanchor=3D0;			// enable use of anchors for campaign =
(1=3Don|0=3Doff)=0A=
var _utcp=3D"/";			// the cookie path for tracking=0A=
var _usample=3D100;		// The sampling % of visitors to track (1-100).=0A=
=0A=
//-- UTM Campaign Tracking Settings=0A=
var _uctm=3D1;			// set campaign tracking module (1=3Don|0=3Doff)=0A=
var _ucto=3D"15768000";		// set timeout in seconds (6 month default)=0A=
var _uccn=3D"utm_campaign";	// name=0A=
var _ucmd=3D"utm_medium";		// medium (cpc|cpm|link|email|organic)=0A=
var _ucsr=3D"utm_source";		// source=0A=
var _uctr=3D"utm_term";		// term/keyword=0A=
var _ucct=3D"utm_content";	// content=0A=
var _ucid=3D"utm_id";		// id number=0A=
var _ucno=3D"utm_nooverride";	// don't override=0A=
=0A=
//-- Auto/Organic Sources and Keywords=0A=
var _uOsr=3Dnew Array();=0A=
var _uOkw=3Dnew Array();=0A=
_uOsr[0]=3D"google";	_uOkw[0]=3D"q";=0A=
_uOsr[1]=3D"yahoo";	_uOkw[1]=3D"p";=0A=
_uOsr[2]=3D"msn";		_uOkw[2]=3D"q";=0A=
_uOsr[3]=3D"aol";		_uOkw[3]=3D"query";=0A=
_uOsr[4]=3D"aol";		_uOkw[4]=3D"encquery";=0A=
_uOsr[5]=3D"lycos";	_uOkw[5]=3D"query";=0A=
_uOsr[6]=3D"ask";		_uOkw[6]=3D"q";=0A=
_uOsr[7]=3D"altavista";	_uOkw[7]=3D"q";=0A=
_uOsr[8]=3D"netscape";	_uOkw[8]=3D"query";=0A=
_uOsr[9]=3D"cnn";	_uOkw[9]=3D"query";=0A=
_uOsr[10]=3D"looksmart";	_uOkw[10]=3D"qt";=0A=
_uOsr[11]=3D"about";	_uOkw[11]=3D"terms";=0A=
_uOsr[12]=3D"mamma";	_uOkw[12]=3D"query";=0A=
_uOsr[13]=3D"alltheweb";	_uOkw[13]=3D"q";=0A=
_uOsr[14]=3D"gigablast";	_uOkw[14]=3D"q";=0A=
_uOsr[15]=3D"voila";	_uOkw[15]=3D"rdata";=0A=
_uOsr[16]=3D"virgilio";	_uOkw[16]=3D"qs";=0A=
_uOsr[17]=3D"live";	_uOkw[17]=3D"q";=0A=
_uOsr[18]=3D"baidu";	_uOkw[18]=3D"wd";=0A=
_uOsr[19]=3D"alice";	_uOkw[19]=3D"qs";=0A=
_uOsr[20]=3D"yandex";	_uOkw[20]=3D"text";=0A=
_uOsr[21]=3D"najdi";	_uOkw[21]=3D"q";=0A=
_uOsr[22]=3D"aol";	_uOkw[22]=3D"q";=0A=
_uOsr[23]=3D"club-internet"; _uOkw[23]=3D"q";=0A=
_uOsr[24]=3D"mama";	_uOkw[24]=3D"query";=0A=
_uOsr[25]=3D"seznam";	_uOkw[25]=3D"q";=0A=
_uOsr[26]=3D"search";	_uOkw[26]=3D"q";=0A=
_uOsr[27]=3D"szukaj";	_uOkw[27]=3D"szukaj";=0A=
_uOsr[28]=3D"szukaj";	_uOkw[28]=3D"qt";=0A=
_uOsr[29]=3D"netsprint";	_uOkw[29]=3D"q";=0A=
_uOsr[30]=3D"google.interia";	_uOkw[30]=3D"q";=0A=
_uOsr[31]=3D"szukacz";	_uOkw[31]=3D"q";=0A=
_uOsr[32]=3D"yam";	_uOkw[32]=3D"k";=0A=
_uOsr[33]=3D"pchome";	_uOkw[33]=3D"q";=0A=
=0A=
=0A=
//-- Auto/Organic Keywords to Ignore=0A=
var _uOno=3Dnew Array();=0A=
//_uOno[0]=3D"urchin";=0A=
//_uOno[1]=3D"urchin.com";=0A=
//_uOno[2]=3D"www.urchin.com";=0A=
=0A=
//-- Referral domains to Ignore=0A=
var _uRno=3Dnew Array();=0A=
//_uRno[0]=3D".urchin.com";=0A=
=0A=
//-- **** Don't modify below this point ***=0A=
var =
_uff,_udh,_udt,_ubl=3D0,_udo=3D"",_uu,_ufns=3D0,_uns=3D0,_ur=3D"-",_ufno=3D=
0,_ust=3D0,_ubd=3Ddocument,_udl=3D_ubd.location,_udlh=3D"",_uwv=3D"1.1";=0A=
var _ugifpath2=3D"http://www.google-analytics.com/__utm.gif";=0A=
if (_udl.hash) _udlh=3D_udl.href.substring(_udl.href.indexOf('#'));=0A=
if (_udl.protocol=3D=3D"https:") =
_ugifpath2=3D"https://ssl.google-analytics.com/__utm.gif";=0A=
if (!_utcp || _utcp=3D=3D"") _utcp=3D"/";=0A=
function urchinTracker(page) {=0A=
 if (_udl.protocol=3D=3D"file:") return;=0A=
 if (_uff && (!page || page=3D=3D"")) return;=0A=
 var a,b,c,xx,v,z,k,x=3D"",s=3D"",f=3D0;=0A=
 var nx=3D" expires=3D"+_uNx()+";";=0A=
 var dc=3D_ubd.cookie;=0A=
 _udh=3D_uDomain();=0A=
 if (!_uVG()) return;=0A=
 _uu=3DMath.round(Math.random()*2147483647);=0A=
 _udt=3Dnew Date();=0A=
 _ust=3DMath.round(_udt.getTime()/1000);=0A=
 a=3Ddc.indexOf("__utma=3D"+_udh);=0A=
 b=3Ddc.indexOf("__utmb=3D"+_udh);=0A=
 c=3Ddc.indexOf("__utmc=3D"+_udh);=0A=
 if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A=
 if (_utimeout && _utimeout!=3D"") {=0A=
  x=3Dnew Date(_udt.getTime()+(_utimeout*1000));=0A=
  x=3D" expires=3D"+x.toGMTString()+";";=0A=
 }=0A=
 if (_ulink) {=0A=
  if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A=
  s+=3D_udl.search;=0A=
  if(s && s!=3D"" && s.indexOf("__utma=3D")>=3D0) {=0A=
   if (!(_uIN(a=3D_uGC(s,"__utma=3D","&")))) a=3D"-";=0A=
   if (!(_uIN(b=3D_uGC(s,"__utmb=3D","&")))) b=3D"-";=0A=
   if (!(_uIN(c=3D_uGC(s,"__utmc=3D","&")))) c=3D"-";=0A=
   v=3D_uGC(s,"__utmv=3D","&");=0A=
   z=3D_uGC(s,"__utmz=3D","&");=0A=
   k=3D_uGC(s,"__utmk=3D","&");=0A=
   xx=3D_uGC(s,"__utmx=3D","&");=0A=
   if ((k*1) !=3D ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) =
{_ubl=3D1;a=3D"-";b=3D"-";c=3D"-";xx=3D"-";z=3D"-";v=3D"-";}=0A=
   if (a!=3D"-" && b!=3D"-" && c!=3D"-") f=3D1;=0A=
   else if(a!=3D"-") f=3D2;=0A=
  }=0A=
 }=0A=
 if(f=3D=3D1) {=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+c+"; path=3D"+_utcp+";"+_udo;=0A=
 } else if (f=3D=3D2) {=0A=
  a=3D_uFixA(s,"&",_ust);=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A=
  _ufns=3D1;=0A=
 } else if (a>=3D0 && b>=3D0 && c>=3D0) {=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
 } else {=0A=
  if (a>=3D0) a=3D_uFixA(_ubd.cookie,";",_ust);=0A=
  else a=3D_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A=
  _ufns=3D1;=0A=
 }=0A=
 if (_ulink && xx && xx!=3D"" && xx!=3D"-") {=0A=
   xx=3D_uUES(xx);=0A=
   if (xx.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmx=3D"+xx+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 if (_ulink && v && v!=3D"" && v!=3D"-") {=0A=
  v=3D_uUES(v);=0A=
  if (v.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmv=3D"+v+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 _uInfo(page);=0A=
 _ufns=3D0;=0A=
 _ufno=3D0;=0A=
 if (!page || page=3D=3D"") _uff=3D1;=0A=
}=0A=
function _uGH() {=0A=
 var hid;=0A=
 var wc=3Dwindow;=0A=
 if (wc && wc.gaGlobal && wc.gaGlobal.hid) {=0A=
  hid=3Dwc.gaGlobal.hid;=0A=
 } else {=0A=
  hid=3DMath.round(Math.random()*0x7fffffff);=0A=
  if (!wc.gaGlobal) wc.gaGlobal=3D{};=0A=
  wc.gaGlobal.hid=3Dhid;=0A=
 }=0A=
 return hid;=0A=
}=0A=
function _uInfo(page) {=0A=
 var p,s=3D"",dm=3D"",pg=3D_udl.pathname+_udl.search;=0A=
 if (page && page!=3D"") pg=3D_uES(page,1);=0A=
 _ur=3D_ubd.referrer;=0A=
 if (!_ur || _ur=3D=3D"") { _ur=3D"-"; }=0A=
 else {=0A=
  dm=3D_ubd.domain;=0A=
  if(_utcp && _utcp!=3D"/") dm+=3D_utcp;=0A=
  p=3D_ur.indexOf(dm);=0A=
  if ((p>=3D0) && (p<=3D8)) { _ur=3D"0"; }=0A=
  if (_ur.indexOf("[")=3D=3D0 && =
_ur.lastIndexOf("]")=3D=3D(_ur.length-1)) { _ur=3D"-"; }=0A=
 }=0A=
 s+=3D"&utmn=3D"+_uu;=0A=
 if (_ufsc) s+=3D_uBInfo();=0A=
 if (_uctm) s+=3D_uCInfo();=0A=
 if (_utitle && _ubd.title && _ubd.title!=3D"") =
s+=3D"&utmdt=3D"+_uES(_ubd.title);=0A=
 if (_udl.hostname && _udl.hostname!=3D"") =
s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A=
 if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A=
 s+=3D"&utmhid=3D"+_uGH();=0A=
 s+=3D"&utmr=3D"+_ur;=0A=
 s+=3D"&utmp=3D"+pg;=0A=
 if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
  var i=3Dnew Image(1,1);=0A=
  i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
  i.onload=3Dfunction() {_uVoid();}=0A=
 }=0A=
 if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
  var i2=3Dnew Image(1,1);=0A=
  =
i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+=
_uGCS();=0A=
  i2.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 return;=0A=
}=0A=
function _uVoid() { return; }=0A=
function _uCInfo() {=0A=
 if (!_ucto || _ucto=3D=3D"") { _ucto=3D"15768000"; }=0A=
 if (!_uVG()) return;=0A=
 var =
c=3D"",t=3D"-",t2=3D"-",t3=3D"-",o=3D0,cs=3D0,cn=3D0,i=3D0,z=3D"-",s=3D""=
;=0A=
 if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A=
 s+=3D_udl.search;=0A=
 var x=3Dnew Date(_udt.getTime()+(_ucto*1000));=0A=
 var dc=3D_ubd.cookie;=0A=
 x=3D" expires=3D"+x.toGMTString()+";";=0A=
 if (_ulink && !_ubl) {=0A=
  z=3D_uUES(_uGC(s,"__utmz=3D","&"));=0A=
  if (z!=3D"-" && z.indexOf(";")=3D=3D-1) { =
_ubd.cookie=3D"__utmz=3D"+z+"; path=3D"+_utcp+";"+x+_udo; return ""; }=0A=
 }=0A=
 z=3Ddc.indexOf("__utmz=3D"+_udh);=0A=
 if (z>-1) { z=3D_uGC(dc,"__utmz=3D"+_udh,";"); }=0A=
 else { z=3D"-"; }=0A=
 t=3D_uGC(s,_ucid+"=3D","&");=0A=
 t2=3D_uGC(s,_ucsr+"=3D","&");=0A=
 t3=3D_uGC(s,"gclid=3D","&");=0A=
 if ((t!=3D"-" && t!=3D"") || (t2!=3D"-" && t2!=3D"") || (t3!=3D"-" && =
t3!=3D"")) {=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"utmcid=3D"+_uEC(t);=0A=
  if (t2!=3D"-" && t2!=3D"") { if (c !=3D "") c+=3D"|"; =
c+=3D"utmcsr=3D"+_uEC(t2); }=0A=
  if (t3!=3D"-" && t3!=3D"") { if (c !=3D "") c+=3D"|"; =
c+=3D"utmgclid=3D"+_uEC(t3); }=0A=
  t=3D_uGC(s,_uccn+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmccn=3D"+_uEC(t);=0A=
  else c+=3D"|utmccn=3D(not+set)";=0A=
  t=3D_uGC(s,_ucmd+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmcmd=3D"+_uEC(t);=0A=
  else  c+=3D"|utmcmd=3D(not+set)";=0A=
  t=3D_uGC(s,_uctr+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmctr=3D"+_uEC(t);=0A=
  else { t=3D_uOrg(1); if (t!=3D"-" && t!=3D"") =
c+=3D"|utmctr=3D"+_uEC(t); }=0A=
  t=3D_uGC(s,_ucct+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmcct=3D"+_uEC(t);=0A=
  t=3D_uGC(s,_ucno+"=3D","&");=0A=
  if (t=3D=3D"1") o=3D1;=0A=
  if (z!=3D"-" && o=3D=3D1) return "";=0A=
 }=0A=
 if (c=3D=3D"-" || c=3D=3D"") { c=3D_uOrg(); if (z!=3D"-" && =
_ufno=3D=3D1)  return ""; }=0A=
 if (c=3D=3D"-" || c=3D=3D"") { if (_ufns=3D=3D1)  c=3D_uRef(); if =
(z!=3D"-" && _ufno=3D=3D1)  return ""; }=0A=
 if (c=3D=3D"-" || c=3D=3D"") {=0A=
  if (z=3D=3D"-" && _ufns=3D=3D1) { =
c=3D"utmccn=3D(direct)|utmcsr=3D(direct)|utmcmd=3D(none)"; }=0A=
  if (c=3D=3D"-" || c=3D=3D"") return "";=0A=
 }=0A=
 if (z!=3D"-") {=0A=
  i=3Dz.indexOf(".");=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  t=3Dz.substring(i+1,z.length);=0A=
  if (t.toLowerCase()=3D=3Dc.toLowerCase()) cs=3D1;=0A=
  t=3Dz.substring(0,i);=0A=
  if ((i=3Dt.lastIndexOf(".")) > -1) {=0A=
   t=3Dt.substring(i+1,t.length);=0A=
   cn=3D(t*1);=0A=
  }=0A=
 }=0A=
 if (cs=3D=3D0 || _ufns=3D=3D1) {=0A=
  t=3D_uGC(dc,"__utma=3D"+_udh,";");=0A=
  if ((i=3Dt.lastIndexOf(".")) > 9) {=0A=
   _uns=3Dt.substring(i+1,t.length);=0A=
   _uns=3D(_uns*1);=0A=
  }=0A=
  cn++;=0A=
  if (_uns=3D=3D0) _uns=3D1;=0A=
  _ubd.cookie=3D"__utmz=3D"+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; =
path=3D"+_utcp+"; "+x+_udo;=0A=
 }=0A=
 if (cs=3D=3D0 || _ufns=3D=3D1) return "&utmcn=3D1";=0A=
 else return "&utmcr=3D1";=0A=
}=0A=
function _uRef() {=0A=
 if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A=
 var i=3D0,h,k,n;=0A=
 if ((i=3D_ur.indexOf("://"))<0) return "";=0A=
 h=3D_ur.substring(i+3,_ur.length);=0A=
 if (h.indexOf("/") > -1) {=0A=
  k=3Dh.substring(h.indexOf("/"),h.length);=0A=
  if (k.indexOf("?") > -1) k=3Dk.substring(0,k.indexOf("?"));=0A=
  h=3Dh.substring(0,h.indexOf("/"));=0A=
 }=0A=
 h=3Dh.toLowerCase();=0A=
 n=3Dh;=0A=
 if ((i=3Dn.indexOf(":")) > -1) n=3Dn.substring(0,i);=0A=
 for (var ii=3D0;ii<_uRno.length;ii++) {=0A=
  if ((i=3Dn.indexOf(_uRno[ii].toLowerCase())) > -1 && =
n.length=3D=3D(i+_uRno[ii].length)) { _ufno=3D1; break; }=0A=
 }=0A=
 if (h.indexOf("www.")=3D=3D0) h=3Dh.substring(4,h.length);=0A=
 return =
"utmccn=3D(referral)|utmcsr=3D"+_uEC(h)+"|"+"utmcct=3D"+_uEC(k)+"|utmcmd=3D=
referral";=0A=
}=0A=
function _uOrg(t) {=0A=
 if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A=
 var i=3D0,h,k;=0A=
 if ((i=3D_ur.indexOf("://")) < 0) return "";=0A=
 h=3D_ur.substring(i+3,_ur.length);=0A=
 if (h.indexOf("/") > -1) {=0A=
  h=3Dh.substring(0,h.indexOf("/"));=0A=
 }=0A=
 for (var ii=3D0;ii<_uOsr.length;ii++) {=0A=
  if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {=0A=
   if ((i=3D_ur.indexOf("?"+_uOkw[ii]+"=3D")) > -1 || =
(i=3D_ur.indexOf("&"+_uOkw[ii]+"=3D")) > -1) {=0A=
    k=3D_ur.substring(i+_uOkw[ii].length+2,_ur.length);=0A=
    if ((i=3Dk.indexOf("&")) > -1) k=3Dk.substring(0,i);=0A=
    for (var yy=3D0;yy<_uOno.length;yy++) {=0A=
     if (_uOno[yy].toLowerCase()=3D=3Dk.toLowerCase()) { _ufno=3D1; =
break; }=0A=
    }=0A=
    if (t) return _uEC(k);=0A=
    else return =
"utmccn=3D(organic)|utmcsr=3D"+_uEC(_uOsr[ii])+"|"+"utmctr=3D"+_uEC(k)+"|=
utmcmd=3Dorganic";=0A=
   }=0A=
  }=0A=
 }=0A=
 return "";=0A=
}=0A=
function _uBInfo() {=0A=
 var sr=3D"-",sc=3D"-",ul=3D"-",fl=3D"-",cs=3D"-",je=3D1;=0A=
 var n=3Dnavigator;=0A=
 if (self.screen) {=0A=
  sr=3Dscreen.width+"x"+screen.height;=0A=
  sc=3Dscreen.colorDepth+"-bit";=0A=
 } else if (self.java) {=0A=
  var j=3Djava.awt.Toolkit.getDefaultToolkit();=0A=
  var s=3Dj.getScreenSize();=0A=
  sr=3Ds.width+"x"+s.height;=0A=
 }=0A=
 if (n.language) { ul=3Dn.language.toLowerCase(); }=0A=
 else if (n.browserLanguage) { ul=3Dn.browserLanguage.toLowerCase(); }=0A=
 je=3Dn.javaEnabled()?1:0;=0A=
 if (_uflash) fl=3D_uFlash();=0A=
 if (_ubd.characterSet) cs=3D_uES(_ubd.characterSet);=0A=
 else if (_ubd.charset) cs=3D_uES(_ubd.charset);=0A=
 return =
"&utmcs=3D"+cs+"&utmsr=3D"+sr+"&utmsc=3D"+sc+"&utmul=3D"+ul+"&utmje=3D"+j=
e+"&utmfl=3D"+fl;=0A=
}=0A=
function __utmSetTrans() {=0A=
 var e;=0A=
 if (_ubd.getElementById) e=3D_ubd.getElementById("utmtrans");=0A=
 else if (_ubd.utmform && _ubd.utmform.utmtrans) =
e=3D_ubd.utmform.utmtrans;=0A=
 if (!e) return;=0A=
 var l=3De.value.split("UTM:");=0A=
 var i,i2,c;=0A=
 if (_userv=3D=3D0 || _userv=3D=3D2) i=3Dnew Array();=0A=
 if (_userv=3D=3D1 || _userv=3D=3D2) { i2=3Dnew Array(); c=3D_uGCS(); }=0A=
=0A=
 for (var ii=3D0;ii<l.length;ii++) {=0A=
  l[ii]=3D_uTrim(l[ii]);=0A=
  if (l[ii].charAt(0)!=3D'T' && l[ii].charAt(0)!=3D'I') continue;=0A=
  var r=3DMath.round(Math.random()*2147483647);=0A=
  if (!_utsp || _utsp=3D=3D"") _utsp=3D"|";=0A=
  var f=3Dl[ii].split(_utsp),s=3D"";=0A=
  if (f[0].charAt(0)=3D=3D'T') {=0A=
   s=3D"&utmt=3Dtran"+"&utmn=3D"+r;=0A=
   f[1]=3D_uTrim(f[1]); if(f[1]&&f[1]!=3D"") =
s+=3D"&utmtid=3D"+_uES(f[1]);=0A=
   f[2]=3D_uTrim(f[2]); if(f[2]&&f[2]!=3D"") =
s+=3D"&utmtst=3D"+_uES(f[2]);=0A=
   f[3]=3D_uTrim(f[3]); if(f[3]&&f[3]!=3D"") =
s+=3D"&utmtto=3D"+_uES(f[3]);=0A=
   f[4]=3D_uTrim(f[4]); if(f[4]&&f[4]!=3D"") =
s+=3D"&utmttx=3D"+_uES(f[4]);=0A=
   f[5]=3D_uTrim(f[5]); if(f[5]&&f[5]!=3D"") =
s+=3D"&utmtsp=3D"+_uES(f[5]);=0A=
   f[6]=3D_uTrim(f[6]); if(f[6]&&f[6]!=3D"") =
s+=3D"&utmtci=3D"+_uES(f[6]);=0A=
   f[7]=3D_uTrim(f[7]); if(f[7]&&f[7]!=3D"") =
s+=3D"&utmtrg=3D"+_uES(f[7]);=0A=
   f[8]=3D_uTrim(f[8]); if(f[8]&&f[8]!=3D"") =
s+=3D"&utmtco=3D"+_uES(f[8]);=0A=
  } else {=0A=
   s=3D"&utmt=3Ditem"+"&utmn=3D"+r;=0A=
   f[1]=3D_uTrim(f[1]); if(f[1]&&f[1]!=3D"") =
s+=3D"&utmtid=3D"+_uES(f[1]);=0A=
   f[2]=3D_uTrim(f[2]); if(f[2]&&f[2]!=3D"") =
s+=3D"&utmipc=3D"+_uES(f[2]);=0A=
   f[3]=3D_uTrim(f[3]); if(f[3]&&f[3]!=3D"") =
s+=3D"&utmipn=3D"+_uES(f[3]);=0A=
   f[4]=3D_uTrim(f[4]); if(f[4]&&f[4]!=3D"") =
s+=3D"&utmiva=3D"+_uES(f[4]);=0A=
   f[5]=3D_uTrim(f[5]); if(f[5]&&f[5]!=3D"") =
s+=3D"&utmipr=3D"+_uES(f[5]);=0A=
   f[6]=3D_uTrim(f[6]); if(f[6]&&f[6]!=3D"") =
s+=3D"&utmiqt=3D"+_uES(f[6]);=0A=
  }=0A=
  if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A=
  if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
   i[ii]=3Dnew Image(1,1);=0A=
   i[ii].src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
   i[ii].onload=3Dfunction() { _uVoid(); }=0A=
  }=0A=
  if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
   i2[ii]=3Dnew Image(1,1);=0A=
   =
i2[ii].src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D=
"+c;=0A=
   i2[ii].onload=3Dfunction() { _uVoid(); }=0A=
  }=0A=
 }=0A=
 return;=0A=
}=0A=
function _uFlash() {=0A=
 var f=3D"-",n=3Dnavigator;=0A=
 if (n.plugins && n.plugins.length) {=0A=
  for (var ii=3D0;ii<n.plugins.length;ii++) {=0A=
   if (n.plugins[ii].name.indexOf('Shockwave Flash')!=3D-1) {=0A=
    f=3Dn.plugins[ii].description.split('Shockwave Flash ')[1];=0A=
    break;=0A=
   }=0A=
  }=0A=
 } else if (window.ActiveXObject) {=0A=
  for (var ii=3D10;ii>=3D2;ii--) {=0A=
   try {=0A=
    var fl=3Deval("new =
ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");=0A=
    if (fl) { f=3Dii + '.0'; break; }=0A=
   }=0A=
   catch(e) {}=0A=
  }=0A=
 }=0A=
 return f;=0A=
}=0A=
function __utmLinker(l,h) {=0A=
 if (!_ulink) return;=0A=
 var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A=
 var dc=3D_ubd.cookie;=0A=
 if (!l || l=3D=3D"") return;=0A=
 var iq =3D l.indexOf("?"); =0A=
 var ih =3D l.indexOf("#"); =0A=
 if (dc) {=0A=
  a=3D_uES(_uGC(dc,"__utma=3D"+_udh,";"));=0A=
  b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A=
  c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A=
  x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A=
  z=3D_uES(_uGC(dc,"__utmz=3D"+_udh,";"));=0A=
  v=3D_uES(_uGC(dc,"__utmv=3D"+_udh,";"));=0A=
  k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A=
  =
p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D=
"+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A=
 }=0A=
 if (p) {=0A=
  if (h && ih>-1) return;=0A=
  if (h) { _udl.href=3Dl+"#"+p; }=0A=
  else {=0A=
   if (iq=3D=3D-1 && ih=3D=3D-1) _udl.href=3Dl+"?"+p;=0A=
   else if (ih=3D=3D-1) _udl.href=3Dl+"&"+p;=0A=
   else if (iq=3D=3D-1) =
_udl.href=3Dl.substring(0,ih-1)+"?"+p+l.substring(ih);=0A=
   else _udl.href=3Dl.substring(0,ih-1)+"&"+p+l.substring(ih);=0A=
  }=0A=
 } else { _udl.href=3Dl; }=0A=
}=0A=
function __utmLinkPost(f,h) {=0A=
 if (!_ulink) return;=0A=
 var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A=
 var dc=3D_ubd.cookie;=0A=
 if (!f || !f.action) return;=0A=
 var iq =3D f.action.indexOf("?"); =0A=
 var ih =3D f.action.indexOf("#"); =0A=
 if (dc) {=0A=
  a=3D_uES(_uGC(dc,"__utma=3D"+_udh,";"));=0A=
  b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A=
  c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A=
  x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A=
  z=3D_uES(_uGC(dc,"__utmz=3D"+_udh,";"));=0A=
  v=3D_uES(_uGC(dc,"__utmv=3D"+_udh,";"));=0A=
  k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A=
  =
p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D=
"+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A=
 }=0A=
 if (p) {=0A=
  if (h && ih>-1) return;=0A=
  if (h) { f.action+=3D"#"+p; }=0A=
  else {=0A=
   if (iq=3D=3D-1 && ih=3D=3D-1) f.action+=3D"?"+p;=0A=
   else if (ih=3D=3D-1) f.action+=3D"&"+p;=0A=
   else if (iq=3D=3D-1) =
f.action=3Df.action.substring(0,ih-1)+"?"+p+f.action.substring(ih);=0A=
   else =
f.action=3Df.action.substring(0,ih-1)+"&"+p+f.action.substring(ih);=0A=
  }=0A=
 }=0A=
 return;=0A=
}=0A=
function __utmSetVar(v) {=0A=
 if (!v || v=3D=3D"") return;=0A=
 if (!_udo || _udo =3D=3D "") {=0A=
  _udh=3D_uDomain();=0A=
  if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A=
 }=0A=
 if (!_uVG()) return;=0A=
 var r=3DMath.round(Math.random() * 2147483647);=0A=
 _ubd.cookie=3D"__utmv=3D"+_udh+"."+_uES(v)+"; path=3D"+_utcp+"; =
expires=3D"+_uNx()+";"+_udo;=0A=
 var s=3D"&utmt=3Dvar&utmn=3D"+r;=0A=
 if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A=
 if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
  var i=3Dnew Image(1,1);=0A=
  i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
  i.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
  var i2=3Dnew Image(1,1);=0A=
  =
i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+=
_uGCS();=0A=
  i2.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
}=0A=
function _uGCS() {=0A=
 var t,c=3D"",dc=3D_ubd.cookie;=0A=
 if ((t=3D_uGC(dc,"__utma=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utma=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmb=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmb=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmc=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmc=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmx=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmx=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmz=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmz=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmv=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmv=3D"+t+";");=0A=
 if (c.charAt(c.length-1)=3D=3D"+") c=3Dc.substring(0,c.length-1);=0A=
 return c;=0A=
}=0A=
function _uGC(l,n,s) {=0A=
 if (!l || l=3D=3D"" || !n || n=3D=3D"" || !s || s=3D=3D"") return "-";=0A=
 var i,i2,i3,c=3D"-";=0A=
 i=3Dl.indexOf(n);=0A=
 i3=3Dn.indexOf("=3D")+1;=0A=
 if (i > -1) {=0A=
  i2=3Dl.indexOf(s,i); if (i2 < 0) { i2=3Dl.length; }=0A=
  c=3Dl.substring((i+i3),i2);=0A=
 }=0A=
 return c;=0A=
}=0A=
function _uDomain() {=0A=
 if (!_udn || _udn=3D=3D"" || _udn=3D=3D"none") { _udn=3D""; return 1; }=0A=
 if (_udn=3D=3D"auto") {=0A=
  var d=3D_ubd.domain;=0A=
  if (d.substring(0,4)=3D=3D"www.") {=0A=
   d=3Dd.substring(4,d.length);=0A=
  }=0A=
  _udn=3Dd;=0A=
 }=0A=
 _udn =3D _udn.toLowerCase(); =0A=
 if (_uhash=3D=3D"off") return 1;=0A=
 return _uHash(_udn);=0A=
}=0A=
function _uHash(d) {=0A=
 if (!d || d=3D=3D"") return 1;=0A=
 var h=3D0,g=3D0;=0A=
 for (var i=3Dd.length-1;i>=3D0;i--) {=0A=
  var c=3DparseInt(d.charCodeAt(i));=0A=
  h=3D((h << 6) & 0xfffffff) + c + (c << 14);=0A=
  if ((g=3Dh & 0xfe00000)!=3D0) h=3D(h ^ (g >> 21));=0A=
 }=0A=
 return h;=0A=
}=0A=
function _uFixA(c,s,t) {=0A=
 if (!c || c=3D=3D"" || !s || s=3D=3D"" || !t || t=3D=3D"") return "-";=0A=
 var a=3D_uGC(c,"__utma=3D"+_udh,s);=0A=
 var lt=3D0,i=3D0;=0A=
 if ((i=3Da.lastIndexOf(".")) > 9) {=0A=
  _uns=3Da.substring(i+1,a.length);=0A=
  _uns=3D(_uns*1)+1;=0A=
  a=3Da.substring(0,i);=0A=
  if ((i=3Da.lastIndexOf(".")) > 7) {=0A=
   lt=3Da.substring(i+1,a.length);=0A=
   a=3Da.substring(0,i);=0A=
  }=0A=
  if ((i=3Da.lastIndexOf(".")) > 5) {=0A=
   a=3Da.substring(0,i);=0A=
  }=0A=
  a+=3D"."+lt+"."+t+"."+_uns;=0A=
 }=0A=
 return a;=0A=
}=0A=
function _uTrim(s) {=0A=
  if (!s || s=3D=3D"") return "";=0A=
  while ((s.charAt(0)=3D=3D' ') || (s.charAt(0)=3D=3D'\n') || =
(s.charAt(0,1)=3D=3D'\r')) s=3Ds.substring(1,s.length);=0A=
  while ((s.charAt(s.length-1)=3D=3D' ') || =
(s.charAt(s.length-1)=3D=3D'\n') || (s.charAt(s.length-1)=3D=3D'\r')) =
s=3Ds.substring(0,s.length-1);=0A=
  return s;=0A=
}=0A=
function _uEC(s) {=0A=
  var n=3D"";=0A=
  if (!s || s=3D=3D"") return "";=0A=
  for (var i=3D0;i<s.length;i++) {if (s.charAt(i)=3D=3D" ") n+=3D"+"; =
else n+=3Ds.charAt(i);}=0A=
  return n;=0A=
}=0A=
function __utmVisitorCode(f) {=0A=
 var r=3D0,t=3D0,i=3D0,i2=3D0,m=3D31;=0A=
 var a=3D_uGC(_ubd.cookie,"__utma=3D"+_udh,";");=0A=
 if ((i=3Da.indexOf(".",0))<0) return;=0A=
 if ((i2=3Da.indexOf(".",i+1))>0) r=3Da.substring(i+1,i2); else return =
"";  =0A=
 if ((i=3Da.indexOf(".",i2+1))>0) t=3Da.substring(i2+1,i); else return =
"";  =0A=
 if (f) {=0A=
  return r;=0A=
 } else {=0A=
  var c=3Dnew =
Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T'=
,'U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');=0A=
  return =
c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r=
&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5=
&m]+c[t&m];=0A=
 }=0A=
}=0A=
function _uIN(n) {=0A=
 if (!n) return false;=0A=
 for (var i=3D0;i<n.length;i++) {=0A=
  var c=3Dn.charAt(i);=0A=
  if ((c<"0" || c>"9") && (c!=3D".")) return false;=0A=
 }=0A=
 return true;=0A=
}=0A=
function _uES(s,u) {=0A=
 if (typeof(encodeURIComponent) =3D=3D 'function') {=0A=
  if (u) return encodeURI(s);=0A=
  else return encodeURIComponent(s);=0A=
 } else {=0A=
  return escape(s);=0A=
 }=0A=
}=0A=
function _uUES(s) {=0A=
 if (typeof(decodeURIComponent) =3D=3D 'function') {=0A=
  return decodeURIComponent(s);=0A=
 } else {=0A=
  return unescape(s);=0A=
 }=0A=
}=0A=
function _uVG() {=0A=
 if((_udn.indexOf("www.google.") =3D=3D 0 || _udn.indexOf(".google.") =
=3D=3D 0 || _udn.indexOf("google.") =3D=3D 0) && _utcp=3D=3D'/' && =
_udn.indexOf("google.org")=3D=3D-1) {=0A=
  return false;=0A=
 }=0A=
 return true;=0A=
}=0A=
function _uSP() {=0A=
 var s=3D100;=0A=
 if (_usample) s=3D_usample;=0A=
 if(s>=3D100 || s<=3D0) return true;=0A=
 return ((__utmVisitorCode(1)%10000)<(s*100));=0A=
}=0A=
function urchinPathCopy(p){=0A=
 var d=3Ddocument,nx,tx,sx,i,c,cs,t,h,o;=0A=
 cs=3Dnew Array("a","b","c","v","x","z");=0A=
 h=3D_uDomain(); if (_udn && _udn!=3D"") o=3D" domain=3D"+_udn+";";=0A=
 nx=3D_uNx()+";";=0A=
 tx=3Dnew Date(); tx.setTime(tx.getTime()+(_utimeout*1000));=0A=
 tx=3Dtx.toGMTString()+";";=0A=
 sx=3Dnew Date(); sx.setTime(sx.getTime()+(_ucto*1000));=0A=
 sx=3Dsx.toGMTString()+";";=0A=
 for (i=3D0;i<6;i++){=0A=
  t=3D" expires=3D";=0A=
  if (i=3D=3D1) t+=3Dtx; else if (i=3D=3D2) t=3D""; else if (i=3D=3D5) =
t+=3Dsx; else t+=3Dnx;=0A=
  c=3D_uGC(d.cookie,"__utm"+cs[i]+"=3D"+h,";");=0A=
  if (c!=3D"-") d.cookie=3D"__utm"+cs[i]+"=3D"+c+"; path=3D"+p+";"+t+o;=0A=
 }=0A=
}=0A=
function _uCO() {=0A=
 if (!_utk || _utk=3D=3D"" || _utk.length<10) return;=0A=
 var d=3D'www.google.com';=0A=
 if (_utk.charAt(0)=3D=3D'!') d=3D'analytics.corp.google.com';=0A=
 _ubd.cookie=3D"GASO=3D"+_utk+"; path=3D"+_utcp+";"+_udo;=0A=
 var sc=3Ddocument.createElement('script');=0A=
 sc.type=3D'text/javascript';=0A=
 sc.id=3D"_gasojs";=0A=
 =
sc.src=3D'https://'+d+'/analytics/reporting/overlay_js?gaso=3D'+_utk+'&'+=
Math.random();=0A=
 document.getElementsByTagName('head')[0].appendChild(sc);  =0A=
}=0A=
function _uGT() {=0A=
 var h=3Dlocation.hash, a;=0A=
 if (h && h!=3D"" && h.indexOf("#gaso=3D")=3D=3D0) {=0A=
  a=3D_uGC(h,"gaso=3D","&");=0A=
 } else {=0A=
  a=3D_uGC(_ubd.cookie,"GASO=3D",";");=0A=
 }=0A=
 return a;=0A=
}=0A=
var _utk=3D_uGT();=0A=
if (_utk && _utk!=3D"" && _utk.length>10) {=0A=
 if (window.addEventListener) {=0A=
  window.addEventListener('load', _uCO, false); =0A=
 } else if (window.attachEvent) { =0A=
  window.attachEvent('onload', _uCO);=0A=
 }=0A=
}=0A=
=0A=
function _uNx() {=0A=
  return (new Date((new Date()).getTime()+63072000000)).toGMTString();=0A=
}=0A=

------=_NextPart_000_001F_01C8A309.BB7A80A0
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.blogger.com/widgets/3583697662-widgets.js

var w_a=3Dfalse;function w_b(a){try{throw a;}catch(b){w_c(b)}}function =
w_c(a,b){var c=3D"Javascript exception: "+(b?b:"")+" "+a;if(w_d())c+=3D" =
"+a.name+": "+a.message+" ("+a.number+")";var d=3D"";if(typeof =
a=3D=3D"string")d=3Da+"\n";else for(var e in a)try{d+=3De+": =
"+a[e]+"\n"}catch(f){}d+=3Dw_e(w_c.caller);w_aa(c+"\n"+d,1)}var =
w_ba=3D/function (\w+)/;function w_ca(a){var =
b=3Dw_ba.exec(String(a));if(b)return b[1];return""}function =
w_e(a){try{if(!w_d()&&!(w_f("safari")||w_f("konqueror"))&&w_f("mozilla"))=
return Error().stack;=0A=
if(!a)return"";var b=3D"- "+w_ca(a)+"(";for(var =
c=3D0;c<a.arguments.length;c++){if(c>0)b+=3D", ";var =
d=3DString(a.arguments[c]);if(d.length>40)d=3Dd.substr(0,40)+"...";b+=3Dd=
}b+=3D")\n";b+=3Dw_e(a.caller);return b}catch(e){return"[Cannot get =
stack trace]: "+e+"\n"}}var w_da,w_g=3Dnull,w_h=3Dfalse;function =
w_ea(){if((w_g=3D=3Dnull||w_g.closed)&&!w_h)try{w_h=3Dtrue;w_g=3Dwindow.o=
pen("","debug","width=3D700,height=3D500,toolbar=3Dno,resizable=3Dyes,scr=
ollbars=3Dyes,left=3D16,top=3D16,screenx=3D16,screeny=3D16");w_g.blur();w=
_g.document.open();w_h=3D=0A=
false;var a=3D"<font color=3D#ff0000><b>To turn off this debugging =
window,hit 'D' inside the main caribou window, then close this =
window.</b></font><br>";w_i(a)}catch(b){}}function =
w_aa(a,b){if(!w_a){if(typeof =
w_j!=3D"undefined")w_j(w_k(a));return}try{var c=3D(new =
Date).getTime()-w_da,d=3D"["+c+"] =
"+w_k(a).replace(/\n/g,"<br>")+"<br>";if(b=3D=3D1){d=3D"<font =
color=3D#ff0000><b>Error: =
"+d+"</b></font>";w_g.focus()}}catch(e){}w_i(d)}function =
w_i(a){if(!w_a)return;try{w_ea();w_g.document.write(a);w_g.scrollTo(0,100=
0000)}catch(b){}}=0A=
;function w_f(a){if(a in w_l)return w_l[a];return =
w_l[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var =
w_l=3D{};function w_d(){return w_f("msie")&&!window.opera}function =
w_fa(a){if(typeof Error!=3D"undefined")throw new Error(a||"Assertion =
Failed");else throw a;}function w_ga(a){a=3Da||"Assertion =
failed";if(typeof w_b!=3D"undefined")w_b(a+"\n");w_fa(a)}function =
w_m(a,b){if(!a){b=3Db||"Assertion failed";w_ga(b)}}function =
w_n(a,b){a.style.display=3Db?"":"none"}function =
w_ha(a,b){a.style.display=3Db?"block":=0A=
"none"}function w_ia(a,b){a.style.display=3Db?"inline":"none"}function =
w_o(a,b){if(a=3D=3Dnull||a.className=3D=3Dnull)return =
false;if(a.className=3D=3Db)return true;var c=3Da.className.split(" =
");for(var d=3D0;d<c.length;d++)if(c[d]=3D=3Db)return true;return =
false}function w_p(a,b){if(w_o(a,b))return;a.className+=3D" "+b}function =
w_q(a,b){if(a.className=3D=3Dnull)return;if(a.className=3D=3Db){a.classNa=
me=3D"";return}var c=3Da.className.split(" "),d=3D[],e=3Dfalse;for(var =
f=3D0;f<c.length;f++)if(c[f]!=3Db){if(c[f])d.push(c[f])}else =
e=3Dtrue;if(e)a.className=3D=0A=
d.join(" ")}function w_r(a,b){var c=3D[];for(var =
d=3Da.firstChild;d;d=3Dd.nextSibling)w_s(d,b,c);return c}function =
w_s(a,b,c){if(b.select(a))c.push(a);for(var =
d=3Da.firstChild;d;d=3Dd.nextSibling)w_s(d,b,c)}var =
w_ja=3D/&/g,w_ka=3D/</g,w_la=3D/>/g;function =
w_k(a){if(!a)return"";return =
a.replace(w_ja,"&amp;").replace(w_ka,"&lt;").replace(w_la,"&gt;").replace=
(w_ma,"&quot;")}var w_ma=3D/\"/g;function w_na(a){return =
document.getElementById(a)}function w_oa(a){return document.all[a]}var =
w_pa=3Ddocument.getElementById?w_na:=0A=
w_oa;function =
w_j(a){try{if(window.parent!=3Dwindow&&window.parent.log){window.parent.l=
og(window.name+"::"+a);return}}catch(b){}var c=3Dw_pa("log");if(c){var =
d=3D"<p class=3Dlogentry><span class=3Dlogdate>"+new Date+"</span><span =
class=3Dlogmsg>"+a+"</span></p>";c.innerHTML=3Dd+c.innerHTML}else =
window.status=3Da};function w_t(){}w_t.raise=3Dfunction(a){if(typeof =
Error!=3D"undefined")throw new Error(a||"Assertion Failed");else throw =
a;};w_t.fail=3Dfunction(a){a=3Da||"Assertion failed";if(!(typeof =
w_b=3D=3D"undefined"))w_b(a+"\n");w_t.raise(a)};w_t.isTrue=3Dfunction(a,b=
){if(!a){if(b=3D=3D=3Dundefined)b=3D"Assertion =
failed";w_t.fail(b)}};w_t.equals=3Dfunction(a,b,c){if(a!=3Db){if(c=3D=3D=3D=
undefined)c=3D"AS_Assert.equals failed: <"+a+"> !=3D =
<"+b+">";w_t.fail(c)}};w_t.typeOf=3Dfunction(a,b,c){if(typeof =
a=3D=3Db)return;if(a||a=3D=3D"")try{if(b=3D=3Dw_t.TYPE_MAP[typeof a]||=0A=
a instanceof b)return}catch(d){}if(c=3D=3D=3Dundefined){if(typeof =
b=3D=3D"function"){var =
e=3Db.toString().match(/^\s*function\s+([^\s\{]+)/);if(e)b=3De[1]}c=3D"AS=
_Assert.typeOf failed: <"+a+"> not typeof =
"+b}w_t.fail(c)};w_t.TYPE_MAP=3D{string:String,number:Number,"boolean":Bo=
olean};w_t.numArgs=3Dfunction(a,b){var =
c=3Dw_t.numArgs.caller;if(c&&c.arguments.length!=3Da){if(b=3D=3D=3Dundefi=
ned)b=3Dc.name+" expected "+a+" arguments  but received =
"+c.arguments.length;w_t.fail(b)}};var w_u;function w_qa(){var =
a=3D["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsof=
t.XMLHTTP"];if(typeof XMLHttpRequest=3D=3D"undefined"&&typeof =
ActiveXObject!=3D"undefined"){for(var b=3D0;b<a.length;b++){var =
c=3Da[b];try{new ActiveXObject(c);w_u=3Dc;break}catch(d){}}if(!w_u)throw =
Error("Could not create ActiveXObject. ActiveX might be disabled, or =
MSXML might not be installed.");}}w_qa();function w_ra(){if(w_u)return =
new ActiveXObject(w_u);else return new XMLHttpRequest}function =
w_sa(a,b,c,d){a.open("POST",=0A=
b,true);a.onreadystatechange=3Dd;a.setRequestHeader("Content-Type","appli=
cation/x-www-form-urlencoded");a.setRequestHeader("Content-Length",c.leng=
th);w_ta(a,c)}function w_ta(a,b){try{a.send(b)}catch(c){w_j("XMLHttpSend =
failed "+c.toString()+"<br>"+c.stack);throw c;}};var =
w_ua=3D0,w_v=3D0;if("undefined"=3D=3Dtypeof =
w_j)w_j=3Dfunction(){};function w_va(a){var =
b=3D-1;try{b=3Da.status}catch(c){}return b}function w_wa(a){var =
b=3Dnull;try{b=3Da.statusText}catch(c){}return b}function =
w_xa(a,b,c,d){if(a.readyState=3D=3D4)try{var =
e=3Dtrue;if(d)try{e=3D!(false=3D=3D=3Dd(a))}catch(f){w_j("Message =
("+b+") handling failed: "+f);throw f;}var =
g=3Dw_va(a);if(200=3D=3D=3Dg){w_j("Message ("+b+") received after =
"+((new Date).getTime()-c)+" ms");try{var h=3D(new =
Date).getTime();if(e&&a.responseText.length)eval(a.responseText);=0A=
w_j("Message ("+b+") processing took "+((new Date).getTime()-h)+" =
ms")}catch(f){w_j("Message ("+b+") processing failed: =
"+f);alert(f+"\n"+f.stack+"\n\n"+a.responseText);throw f;}}else =
if(204=3D=3Dg)w_j("Message ("+b+") received after "+((new =
Date).getTime()-c)+" ms");else w_j("Message ("+b+") failed with response =
"+g+" "+w_wa(a)+" after "+((new Date).getTime()-c)+" =
ms.")}finally{--w_v}}function w_ya(a,b,c){var d=3D"";if(b){var =
e=3D"";for(var f=3D0;f<b.length;){var =
g=3Db[f++],h=3Db[f++];d+=3De+encodeURIComponent(g);=0A=
e=3D"&";if(null!=3D=3Dh&&undefined!=3D=3Dh)d+=3D"=3D"+encodeURIComponent(=
h.toString())}}var i=3D++w_ua,j=3Dw_ra(),k=3D(new =
Date).getTime(),l=3Dfunction(){w_xa(j,i,k,c)},m=3Da;for(var =
n=3Dm.length+1;(n=3Dm.lastIndexOf("&",n-1))>=3D0;)m=3Dm.substring(0,n)+"&=
amp;"+m.substring(n+1);w_j("Message ("+i+") sent: POST =
<tt>"+m+"</tt>.");++w_v;w_sa(j,a,d,l)};var =
w_za=3Dthis;if(!Function.prototype.apply)Function.prototype.apply=3Dfunct=
ion(a,b){var c=3D[],d,e;if(!a)a=3Dw_za;var f=3Db||[];for(var =
g=3D0;g<f.length;g++)c[g]=3D"args["+g+"]";e=3D"oScope.__applyTemp__.peek(=
)("+c.join(",")+");";if(!a.__applyTemp__)a.__applyTemp__=3D[];a.__applyTe=
mp__.push(this);d=3Deval(e);a.__applyTemp__.pop();return =
d};if(!Array.prototype.push)Array.prototype.push=3Dfunction(){for(var =
a=3D0;a<arguments.length;a++)this[this.length]=3Darguments[a];return =
this.length};if(!Array.prototype.pop)Array.prototype.pop=3D=0A=
function(){if(!this.length)return;var =
a=3Dthis[this.length-1];this.length--;return =
a};Array.prototype.peek=3Dfunction(){return =
this[this.length-1]};if(!Array.prototype.shift)Array.prototype.shift=3Dfu=
nction(){if(this.length=3D=3D0)return;var a=3Dthis[0];for(var =
b=3D0;b<this.length-1;b++)this[b]=3Dthis[b+1];this.length--;return =
a};if(!Array.prototype.unshift)Array.prototype.unshift=3Dfunction(){var =
a=3Darguments.length;for(var =
b=3Dthis.length-1;b>=3D0;b--)this[b+a]=3Dthis[b];for(var =
c=3D0;c<a;c++)this[c]=3Darguments[c];return this.length};=0A=
if(!Array.prototype.forEach)Array.prototype.forEach=3Dfunction(a,b){for(v=
ar c=3D0;c<this.length;c++)a.call(b,this[c],c,this)};function =
w_w(a,b){var =
c=3Da.xc||[];c=3Dc.concat(Array.prototype.slice.call(arguments,2));if(typ=
eof a.Vb!=3D"undefined")b=3Da.Vb;if(typeof =
a.Ub!=3D"undefined")a=3Da.Ub;var d=3Dfunction(){var =
e=3Dc.concat(Array.prototype.slice.call(arguments));return =
a.apply(b,e)};d.xc=3Dc;d.Vb=3Db;d.Ub=3Da;return =
d}Function.prototype.bind=3Dfunction(a){return =
w_w.apply(null,[this,a].concat(Array.prototype.slice.call(arguments,=0A=
1)))};Function.prototype.inherits=3Dfunction(a){var =
b=3Dfunction(){};b.prototype=3Da.prototype;this.Nc=3Da.prototype;this.pro=
totype=3Dnew b};function =
w_x(a,b,c,d,e,f){this.instanceId=3Da;this.sectionId=3Db;this.markups=3Dc;=
if(d)this.rootElement=3Dd;if(e)this.data=3De;if(f){this.w=3Df;if(!w_x.IsV=
alidDisplayMode(f))throw"bad display mode: "+f;}else =
this.w=3Dw_x.DISPLAY_MODE_NONE;this.isNew=3Dfalse}w_x.IsValidDisplayMode=3D=
function(a){return =
a=3D=3Dw_x.DISPLAY_MODE_SNIPPET||a=3D=3Dw_x.DISPLAY_MODE_FULL||a=3D=3Dw_x=
.DISPLAY_MODE_LAYOUT||a=3D=3Dw_x.DISPLAY_MODE_NONE};w_x.DISPLAY_MODE_FULL=
=3D"displayModeFull";w_x.DISPLAY_MODE_SNIPPET=3D"displayModeSnippet";w_x.=
DISPLAY_MODE_LAYOUT=3D=0A=
"displayModeLayout";w_x.DISPLAY_MODE_NONE=3D"displayModeNone";function =
w_y(a){this.zc=3Dtrue;this.$a=3Dnew =
w_z(this);this.e=3Da;this.F=3Dnull}w_y.DATA_NAMESPACE_PREFIX=3D"data";w_y=
.ACTION_NAMESPACE_PREFIX=3D"b";w_y.INTERPRET_ATTR_NAMESPACE_PREFIX=3D"exp=
r";w_y.prototype.eb=3Dfunction(){var =
a=3Dthis.e.rootElement;a.innerHTML=3D"";if(this.N()=3D=3Dw_x.DISPLAY_MODE=
_LAYOUT)a.appendChild(this.X("layout"));else =
a.appendChild(this.X("main"));return =
a};w_y.prototype.Kb=3Dfunction(a){this.F=3Da};w_y.prototype.k=3Dfunction(=
){return this.e};=0A=
w_y.prototype.r=3Dfunction(a){return =
document.getElementById(this.e.instanceId+"_"+a)};w_y.prototype.z=3Dfunct=
ion(a){var b=3Dthis.r(a);if(!b)throw"did not find element for id =
"+a;return b};w_y.prototype.i=3Dfunction(){return =
this.e.data};w_y.prototype.ya=3Dfunction(a){return =
this.e.data=3Da};w_y.prototype.wb=3Dfunction(){return =
this.e.isNew};w_y.prototype.Jb=3Dfunction(a){return =
this.e.isNew=3Da};w_y.prototype.X=3Dfunction(a,b){var =
c=3Db;if(!c)c=3Dthis.i();if(!c)c=3D{};var d=3Dnew =
w_A;d.M("widget",this.lb());d.ab(c);var e=3Dthis.na(a,=0A=
d,w_A.DEFAULT_DICTIONARY_KEY);return =
this.ma(e,document)};w_y.prototype.lb=3Dfunction(){var =
a=3D{};a.type=3Dthis.F.d();a.instanceId=3Dthis.e.instanceId;a.sectionId=3D=
this.e.sectionId;a.actionUrl=3Dw_.Ga;var =
b=3Dw_.Wb+"&widgetType=3D"+this.F.d()+"&widgetId=3D"+this.e.instanceId+"&=
action=3D"+w_.EDIT_WIDGET_ACTION;a.quickEditUrl=3Db;return =
a};w_y.prototype.na=3Dfunction(a,b,c){var =
d=3Dthis.qb(a);w_t.isTrue(d!=3Dnull,"Markup chunk not found for "+a);var =
e=3Dd.varName?d.varName:"",f=3Db.i(c);w_t.isTrue(f!=3Dnull,"No data =
found for call: "+=0A=
c);b.M(e,f);var g=3Dthis.P(d.rootNode,b);b.va(e);return =
g};w_y.prototype.P=3Dfunction(a,b){w_t.isTrue(a!=3Dnull,"Null node");var =
c=3Da;if(a.attributes){var d=3D[],e=3D[];for(var =
f=3D0;f<a.attributes.length;f++){var =
g=3Da.attributes.item(f),h=3Dthis.Ab(g,b);if(g!=3Dh){e[e.length]=3Dg.node=
Name;d[d.length]=3Dh}}for(var =
f=3D0;f<e.length;f++)a.attributes.removeNamedItem(e[f]);for(var =
f=3D0;f<d.length;f++)a.attributes.setNamedItem(d[f])}if(a.nodeType=3D=3D1=
)if(a.prefix=3D=3Dw_y.ACTION_NAMESPACE_PREFIX)c=3Dthis.ub(a,b);else =
if(a.prefix=3D=3Dw_y.DATA_NAMESPACE_PREFIX)c=3D=0A=
this.tb(a,b);if(a.hasChildNodes()){var =
i=3Da.ownerDocument.createDocumentFragment();while(a.hasChildNodes()){var=
 =
j=3Da.firstChild,k=3Dthis.P(j,b);i.appendChild(k);if(j!=3Dk)a.removeChild=
(j)}c.appendChild(i)}return =
c};w_y.prototype.Ab=3Dfunction(a,b){if(a.prefix=3D=3Dw_y.INTERPRET_ATTR_N=
AMESPACE_PREFIX){var =
c=3Da.ownerDocument.createAttribute(a.localName||a.baseName),d=3Dthis.$a.=
ia(a.nodeValue,b);c.nodeValue=3Dd;return c}return =
a};w_y.prototype.ub=3Dfunction(a,b){var =
c=3Da.localName||a.baseName,d=3Dthis.xa(c,a,b);return this.Qb(d)};=0A=
w_y.prototype.Qb=3Dfunction(a){var b=3Da;if(!a)return =
document.createDocumentFragment();if(!a.nodeType)b=3Ddocument.createTextN=
ode(a);if(b.nodeType=3D=3D3){var =
c=3Ddocument.createDocumentFragment();c.appendChild(b);b=3Dc}return =
b};w_y.prototype.U=3Dfunction(a,b){var c=3Dthis.Q(a);return =
b.i(c[1])};w_y.prototype.tb=3Dfunction(a,b){w_t.isTrue(a!=3Dnull,"Null =
element");w_t.isTrue(b!=3Dnull,"Null =
data");if(a.prefix!=3Dw_y.DATA_NAMESPACE_PREFIX)return a;var =
c=3Dthis.U(a.tagName,b),d=3D""+(c=3D=3Dnull?"":c),e=3Ddocument.createElem=
ent("DIV");=0A=
e.innerHTML=3Dd;var f=3Dthis.O(e);return =
this.ma(f,a.ownerDocument,true)};w_y.prototype.Q=3Dfunction(a){var =
b=3Da.split(":",2);if(b.length=3D=3D1)b.unshift("");b[0]=3Db[0].toLowerCa=
se();return b};w_y.prototype.xa=3Dfunction(a,b,c){var =
d=3D"_WidgetBinding_"+a;if(this.$a[d])return =
this.$a[d](b,c);if(this.F[d])return =
this.F[d](b,c);w_t.isTrue(false,"could not find binding "+a);return =
null};w_y.prototype.zb=3Dfunction(a){if(a=3D=3Dnull)return null;var =
b;if(window.ActiveXObject){b=3Dnew =
ActiveXObject("Microsoft.XMLDOM");b.async=3D=0A=
"false";if(!b.loadXML(a))throw new Error(b.parseError);}else =
if(window.DOMParser){var c=3Dnew =
DOMParser;b=3Dc.parseFromString(a,"text/xml");if(b.documentElement.nodeNa=
me=3D=3D"parsererror")throw new =
Error(b.documentElement.textContent);}else w_t.raise("Unable to find XML =
parser");return b.documentElement};w_y.prototype.O=3Dfunction(a){var =
b=3Da.ownerDocument.createDocumentFragment();while(a.hasChildNodes())b.ap=
pendChild(a.firstChild);return =
b};w_y.prototype.ma=3Dfunction(a,b,c){w_t.isTrue(a!=3Dnull);if(b.importNo=
de)if(a.nodeType=3D=3D=0A=
11){var d=3Db.createDocumentFragment();for(var =
e=3Da.firstChild;e!=3Dnull;e=3De.nextSibling)d.appendChild(b.importNode(e=
,true));return d}else return b.importNode(a,true);if(!c){var =
f=3Db.createElement("DIV"),g=3Da.innerHTML||a.xml;f.innerHTML=3Dg;return =
this.O(f)}var h=3Dfunction(i){var =
j;if(i.nodeType=3D=3D1){if(i.nodeName=3D=3D"SCRIPT")return =
document.createTextNode("");j=3Db.createElement(i.nodeName);if(i.style)j.=
setAttribute("style",i.style.cssText);if(i.currentStyle.height)j.setAttri=
bute("height",i.currentStyle.height);=0A=
if(i.currentStyle.width)j.setAttribute("width",i.currentStyle.width);for(=
var k=3D0;k<i.attributes.length;k++){var =
l=3Di.attributes[k];if(l.value&&l.value!=3D"null"&&l.value!=3D"false"&&l.=
value!=3D"0")j.setAttribute(l.name,l.value)}}else =
if(i.nodeType=3D=3D3)j=3Db.createTextNode(i.nodeValue);else =
if(i.nodeType=3D=3D11)j=3Db.createDocumentFragment();else =
w_t.raise("unexpected node type =
"+i.nodeType);if(i.hasChildNodes())for(var =
k=3D0;k<i.childNodes.length;k++)j.appendChild(h(i.childNodes[k]));return =
j};return h(a)};w_y.prototype.v=3D=0A=
function(a,b){var c=3Dthis.F,d=3Dfunction(e){if(c.ActionCallback)return =
c.ActionCallback(e);else return =
true};w_.v(a,b,this.e.instanceId,this.F.d(),d)};w_y.prototype.N=3Dfunctio=
n(){return this.e.w};w_y.prototype.qb=3Dfunction(a){if(!a)return =
null;var b=3Dw_.Za[a];if(!b)b=3Dthis.e.markups[a];if(!b)return =
null;if(!b.parsedTemplate||!b.parsedTemplate.ownerDocument)this.yb(b);if(=
!b.parsedTemplate)w_t.raise("Parsing failed for =
"+a);b.rootNode=3Db.parsedTemplate.cloneNode(true);return =
b};w_y.prototype.yb=3Dfunction(a){if(!a)return null;=0A=
var b=3D"<?xml version=3D'1.0'?><markuproot =
xmlns:"+w_y.DATA_NAMESPACE_PREFIX+"=3D'urn:ns1'  =
xmlns:"+w_y.ACTION_NAMESPACE_PREFIX+"=3D'urn:ns2' =
xmlns:"+w_y.INTERPRET_ATTR_NAMESPACE_PREFIX+"=3D'urn:ns3'  =
xmlns=3D'http://www.w3.org/1999/xhtml'>"+a.template+"</markuproot>\n",c=3D=
this.zb(b);a.parsedTemplate=3Dthis.O(c);return =
a};w_y.ConfigureWidget=3Dfunction(a,b){if(!b)b=3D"config";var =
c=3Ddocument.forms[b].widgetId.value,d=3Ddocument.forms[b].widgetType.val=
ue,e=3Dw_B.ProcessForm(document.forms[b],a);if(e.success)w_.SaveWidget(e.=
values,=0A=
c,d)};function =
w_(){}w_.Init=3Dfunction(a,b,c){w_.L=3D{};w_.Wb=3Da;w_.Ga=3Db;w_.Mc=3Dc;w=
_.$b=3Dnull;if(!w_.Za)w_.Za=3D{}};w_.TrapClicks=3Dfunction(a){var =
b=3Dw_.CreateTransparentClickTrappingDiv(a.document);document.body.append=
Child(b)};w_._SetupPreview=3Dfunction(){w_.TrapClicks(window)};w_.NEW_WID=
GET_WINDOW_NAME=3D"chooseWidget";w_.CHOOSE_WIDGET_ACTION=3D"chooseWidget"=
;w_.EDIT_WIDGET_ACTION=3D"editWidget";w_.GetCallbackUrl=3Dfunction(){retu=
rn =
w_.Ga};w_.SetPageActionUrl=3Dfunction(a,b){w_.Sa=3Da;w_.Ec=3Db};w_.GetPag=
eActionUrl=3Dfunction(){return w_.Sa};=0A=
w_.SetWidgetRefreshUrl=3Dfunction(a){w_.Jc=3Da};w_.GetWidgetRefreshUrl=3D=
function(){return =
w_.Jc};w_._SetDataContext=3Dfunction(a){w_.$b=3Da};w_._SetSystemMarkup=3D=
function(a){w_.Za=3Da};w_._RegisterWidget=3Dfunction(a,b,c){var d=3Dnew =
w_y(b);if(!c)c=3Dwindow[a];var e=3Dnew =
c(d);d.Kb(e);w_.L[b.instanceId]=3De;w_.DisplayWidget(e);return =
e};w_._RegisterNewWidget=3Dfunction(a,b,c){var =
d=3Dw_._RegisterWidget(a,b,c),e=3Dd.b();e.Jb(true);return =
d};w_.DisplayWidget=3Dfunction(a,b){var =
c=3Da.b();if(c.N()=3D=3Dw_x.DISPLAY_MODE_NONE)return;if(b||=0A=
a.f&&a.f())c.eb();if(c.N()=3D=3Dw_x.DISPLAY_MODE_FULL)if(a.j)a.j();a.b().=
zc=3Dfalse};w_.GetWidget=3Dfunction(a){if(w_.L)return w_.L[a];return =
null};w_._PopupPaneFromParams=3Dfunction(a,b,c,d,e){var =
f=3D"";if(d)f=3D"&widgetId=3D"+d;var =
g=3Dw_.Wb+"&action=3D"+a+"&sectionId=3D"+b+"&widgetType=3D"+c+f;if(window=
.name=3D=3De){window.location.replace(g);window.focus();return =
window}var =
h=3Dwindow.open(g,e,"width=3D570,height=3D600,left=3D75,top=3D20,resizabl=
e=3Dyes,scrollbars=3Dyes");h.focus();return =
h};w_._PopupConfig=3Dfunction(a){var b=3Da.getAttribute("id"),=0A=
c=3Dw_.GetWidget(b);if(c){var =
d=3Dc.b().configWin;if(d!=3Dnull&&!d.closed){d.focus();return false}}var =
e=3D"config"+b,f=3Dw_._PopupPaneFromParams(w_.EDIT_WIDGET_ACTION,a.parent=
Node.getAttribute("id"),a.getAttribute("widgetType"),b,e);if(c)c.b().conf=
igWin=3Df;return =
false};w_._PopupToolbox=3Dfunction(a){w_._PopupPaneFromParams(w_.CHOOSE_W=
IDGET_ACTION,a.parentNode.getAttribute("id"),a.getAttribute("widgetType")=
,a.getAttribute("id"),w_.NEW_WIDGET_WINDOW_NAME);return =
false};w_.DeleteWidgetFromPage=3Dfunction(a,b){w_.o(b,=0A=
b.LayoutsMessages.DELETING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAct=
ion("delete",{},a,b)};w_y.prototype.Ib=3Dfunction(a,b){w_.o(b,b.LayoutsMe=
ssages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);this.v("configure",a)};w_.=
SaveNewWidget=3Dfunction(a,b,c){var =
d=3Ddocument.getElementById("sectionId").value;a.sectionid=3Dd;w_.o(c,c.L=
ayoutsMessages.SAVING,w_.STATUS_MESSAGE_PENDING_CLASS);w_.RunPageAction("=
addnew",a,"",b)};w_.SaveWidget=3Dfunction(a,b,c){w_m(c!=3Dnull,"no =
type");var d=3D_WidgetManager._GetWidget(b);w_m(d!=3D=0A=
null,"no widget for "+b);if(d.b().wb())w_.SaveNewWidget(a,c,window);else =
d.a.Ib(a,window)};w_._RunInitialAction=3Dfunction(a){var =
b=3Dw_._GetWidget(a);if(b)b.b().v("initial")};w_.v=3Dfunction(a,b,c,d,e){=
w_.RunAction(w_.Ga,a,b,c,d,e)};w_.RunPageAction=3Dfunction(a,b,c,d,e){if(=
!w_.Sa){w_j("RunPageAction error: pageActionUrl_ is undefined.  =
widgetid: "+c+" action: =
"+a);return}b.pageToken=3Dw_.Ec;w_.RunAction(w_.Sa,a,b,c,d,e)};w_.RunActi=
on=3Dfunction(a,b,c,d,e,f){var =
g=3D["action",b,"widgetId",d,"widgetType",e,"responseType",=0A=
"js"];for(var h in c)if(typeof c[h]=3D=3D"object")for(var =
i=3D0;i<c[h].length;++i){g[g.length]=3Dh;g[g.length]=3Dc[h][i]}else{g[g.l=
ength]=3Dh;g[g.length]=3Dc[h]}w_ya(a,g,new =
w_Aa(f))};w_.SetConfigWin=3Dfunction(a,b){if(!a)return;var =
c=3Dw_.GetWidget(a);if(!c)return;c.b().configWin=3Db};w_.CloseIfNoPending=
Messages=3Dfunction(a,b){if(w_v=3D=3D0)window.setTimeout(function(){a.clo=
se()},b);else =
window.setTimeout(function(){w_.CloseIfNoPendingMessages(a,b)},200)};w_._=
KillPopupDelay=3Dfunction(a,b){if(!a)return;w_.CloseIfNoPendingMessages(a=
,=0A=
100);w_.UpdateEditorStatus(a,b)};w_.UpdateEditorStatus=3Dfunction(a,b){if=
(!a)return;var =
c=3Da.document.getElementById("status-message-inner");if(c)c=3Dc.innerHTM=
L;if(c)if(a&&a.opener.parent&&a.opener.parent.editor)a.opener.parent.edit=
or._SetSaveMessage(c,b)};w_.c=3Dfunction(a,b,c){var =
d=3Dw_.L[a];if(c.errors!=3Dnull){var =
e=3Dd?d.b().configWin:null;if(!e)e=3Dwindow;w_.o(e,c.errors,w_.STATUS_MES=
SAGE_BAD_CLASS);if(d&&d.A)d.A(b,c);else =
w_.A(c,e);return}w_m(d!=3Dnull,"no widget for =
"+a);if(b=3D=3D"initial"){d.b().ya(c);w_.DisplayWidget(d,=0A=
true);return}d.c(b,c)};w_.A=3Dfunction(a,b){var =
c=3Da["error-details"];for(var d in =
c)w_B.SetError(d,c[d],b.document)};w_y.prototype.h=3Dfunction(a){w_.o(thi=
s.configWin,a["status-message"],w_.STATUS_MESSAGE_GOOD_CLASS);w_.FinishPo=
pupWork(this.e.instanceId,"_OnWidgetConfigured",function(b){window.opener=
._WidgetManager._OnWidgetConfigured(b,a)})};w_._OnWidgetConfigured=3Dfunc=
tion(a,b){if(window.parent&&window.parent.editor&&b)w_.OnWidgetConfigured=
WithData(a,b);else =
w_._RunInitialAction(a)};w_.OnWidgetConfiguredWithData=3D=0A=
function(a,b){var =
c=3Dw_._GetWidget(a);c.b().ya(b.data);w_.DisplayWidget(c,true);c.b().conf=
igWin=3Dnull};w_.HandlePageActionResult=3Dfunction(a,b,c){var =
d=3Dc["status-message"];if(c.errors!=3Dnull){w_.o(window,c.errors,w_.STAT=
US_MESSAGE_BAD_CLASS);w_.A(c,window);return}if(b=3D=3D"addnew"){var =
e;if(w_.IsOpenerReachable(window)){if(window.opener&&window.opener.parent=
)e=3Dwindow.opener.parent;if(e&&e.editor)e.editor._HandleAddNewWidget(c)}=
w_.o(window,d,w_.STATUS_MESSAGE_GOOD_CLASS);if(window.opener=3D=3Dnull)wi=
ndow.location=3D=0A=
"/rearrange?blogID=3D"+c.blogID;else =
if(e&&e._WidgetManager)e._WidgetManager._KillPopupDelay(window);else =
w_.CloseIfNoPendingMessages(window,100);return}var =
f=3Dw_.L[a];w_m(f!=3Dnull);if(b=3D=3D"delete"){w_.o(f.b().configWin,d,w_.=
STATUS_MESSAGE_GOOD_CLASS);w_.FinishPopupWork(a,"_OnWidgetDeleted")}};w_.=
_OnWidgetDeleted=3Dfunction(a){var =
b=3Dw_.GetWidget(a);if(!b)return;if(b.b().N()=3D=3Dw_x.DISPLAY_MODE_LAYOU=
T)top.editor._HandleDeleteWidget(b.b().e.rootElement);else{var =
c=3Db.b().e.rootElement;c.parentNode.removeChild(c)}delete w_.L[a]};=0A=
w_.FinishPopupWork=3Dfunction(a,b,c){if(w_.IsOpenerReachable(window)){var=
 =
d=3Dwindow.opener;if(!c)c=3Dd._WidgetManager[b];c(a);if(d._WidgetManager)=
d._WidgetManager._KillPopupDelay(window,a);else =
w_.CloseIfNoPendingMessages(window,100)}else{var =
e=3Dw_.GetWidgetRefreshUrl()+"?widgetId=3D"+a;e+=3D"&func=3D"+encodeURICo=
mponent(b);window.location.replace(e)}};w_.IsOpenerReachable=3Dfunction(a=
){var b=3Dfalse;try{if(a.opener){var =
c=3D"X"+a.opener.document.domain;if(c&&c!=3D"X")b=3Dtrue}}catch(d){}retur=
n b};w_.STATUS_MESSAGE_GOOD_CLASS=3D=0A=
"status-msg =
status-msg-yellow-on-white";w_.STATUS_MESSAGE_PENDING_CLASS=3Dw_.STATUS_M=
ESSAGE_GOOD_CLASS;w_.STATUS_MESSAGE_BAD_CLASS=3Dw_.STATUS_MESSAGE_GOOD_CL=
ASS;w_.o=3Dfunction(a,b,c){if(!a)a=3Dself;var =
d=3Da.document.getElementById("status-message-inner");if(d)d.innerHTML=3D=
b;var =
e=3Da.document.getElementById("status-message");if(e)e.className=3Dc};w_.=
MaybePrependHttp=3Dfunction(a){if(a&&a.length>0&&a.substring(0,4)!=3D"htt=
p")a=3D"http://"+a;return =
a};w_.GetFirstElementInElementWithClass=3Dfunction(a,b){if(w_o(a,b))retur=
n a;=0A=
if(a){var c=3Da.childNodes.length;for(var d=3D0;d<c;d++){var =
e=3Dw_.GetFirstElementInElementWithClass(a.childNodes.item(d),b);if(e)ret=
urn e}}return =
null};w_.CreateTransparentClickTrappingDiv=3Dfunction(a){var =
b=3Da.createElement("div"),c=3Da.body.scrollHeight;b.style.position=3D"ab=
solute";b.style.top=3D"0px";b.style.left=3D"0px";b.style.width=3D"100%";b=
.style.height=3Dc+"px";b.style.zIndex=3D"10";b.style.cursor=3D"default";b=
.onclick=3Dw_.pa;b.onmousedown=3Dw_.pa;b.onmouseup=3Dw_.pa;b.style.backgr=
ound=3D"white";b.style.filter=3D"alpha(opacity=3D1)";=0A=
b.style.opacity=3D".01";b.innerHTML=3D"&nbsp;";return =
b};w_.pa=3Dfunction(a){var =
b=3Da;if(!b)b=3Dwindow.event;if(b){b.cancelBubble=3Dtrue;if(b.stopPropaga=
tion)b.stopPropagation()}return false};function =
w_z(a){this.s=3Da}w_z.prototype._WidgetBinding_include=3Dfunction(a,b){va=
r c=3Da.getAttribute("name"),d=3Da.getAttribute("data");return =
this.s.na(c,b,d)};w_z.prototype._WidgetBinding_call=3Dw_z.prototype._Widg=
etBinding_include;w_z.prototype._WidgetBinding_loop=3Dfunction(a,b){var =
c=3Da.getAttribute("values"),d=3Dthis.s.Q(c),e=3D=0A=
this.s.U(d[1],b),f=3Da.getAttribute("var");if(!f)w_t.raise("Invalid =
var=3D attribute on b:loop");var =
g=3Dthis.s.O(a),h=3Da.ownerDocument.createDocumentFragment();if(!e)return=
 h;for(var i=3D0;i<e.length;i++){var =
j=3De[i],k=3Dg.cloneNode(true);b.M(f,j);var =
l=3Dthis.s.P(k,b);b.va(f);h.appendChild(l)}return =
h};w_z.prototype._WidgetBinding_if=3Dfunction(a,b){var =
c=3Dthis.ia(a.getAttribute("cond"),b),d=3Da.ownerDocument.createDocumentF=
ragment(),e=3Dfalse;while(a.firstChild!=3Dnull){var =
f=3Da.firstChild;if("else"=3D=3Dthis.s.Q(f.nodeName)[1].toLowerCase())e=3D=0A=
true;else if(c&&!e||!c&&e){var =
g=3Dthis.s.P(f,b);d.appendChild(g)}if(f.parentNode=3D=3Da)a.removeChild(f=
)}return d};w_z.prototype.ia=3Dfunction(a,b){w_t.isTrue(a!=3Dnull,"null =
expression");var c=3Dthis.Lb(a,b);try{var d=3Deval(c);return =
d}catch(e){w_j("expression=3D["+a+"] error=3D"+e+" =
eval=3D["+c+"]")}return""};w_z.prototype.Lb=3Dfunction(a,b){var c=3Dnew =
RegExp("\\b(?:"+w_y.DATA_NAMESPACE_PREFIX+"|"+w_y.ACTION_NAMESPACE_PREFIX=
+"):[^ ]*\\b","gi"),d=3D"",e=3D0,f=3Dc.exec(a);while(f){var =
g=3Df[0];if(!this.vb(a,c.lastIndex)){var h,=0A=
i=3Dthis.s.Q(g);if(i[0]=3D=3Dw_y.ACTION_NAMESPACE_PREFIX)h=3Dthis.s.xa(i[=
1],null,b);else =
if(i[0]=3D=3Dw_y.DATA_NAMESPACE_PREFIX){h=3Dthis.s.U(g,b);if(!h)h=3D"";h=3D=
h+""}else w_t.raise("Unrecognized prefix =
'"+i[0]+"'");h=3Dh.replace(/"/g,"&quot;");h=3D'"'+h+'"';d+=3Da.substring(=
e,f.index);d+=3Dh;e=3Dc.lastIndex}f=3Dc.exec(a)}d+=3Da.substring(e,a.leng=
th);return =
d};w_z.prototype.vb=3Dfunction(a,b){w_t.isTrue(b<=3Da.length,"Invalid =
index: i=3D"+b+", l=3D"+a.length);var c=3D0;for(var =
d=3D0;d<b;d++)if(a.charAt(d)=3D=3D'"'&&(d=3D=3D0||a.charAt(d-1)!=3D"\\"))=
c++;=0A=
return c%2!=3D0};function =
w_B(){}w_B.ERROR_MSG_ACTIVE_CLASS=3D"errorbox-bad =
errormsg";w_B.ERROR_MSG_INACTIVE_CLASS=3D"errorbox-good";w_B.ProcessForm=3D=
function(a,b){var =
c=3D{};c.success=3Dtrue;c.values=3D{};c.errors=3D{};for(var d in b){var =
e=3Dw_B.GetFieldValue(a[d]),f=3Db[d];w_B.ClearError(d);if(f){var =
g=3Df(e);if(g){w_B.SetError(d,g);c.success=3Dfalse;c.errors[d]=3Dg}}c.val=
ues[d]=3De}return c};w_B.GetFieldValue=3Dfunction(a){if(!a)return =
undefined;if(a.type=3D=3D"checkbox"){if(a.checked)return a.value;return =
undefined}if(a.type=3D=3D=0A=
null){var b=3D[];for(var =
c=3D0;c<a.length;c++)if(a[c].checked)b[b.length]=3Da[c].value;switch(b.le=
ngth){case 0:return undefined;case 1:return b[0];default:return =
b}}return a.value};w_B.pb=3Dfunction(a,b){if(!b)b=3Ddocument;var =
c=3D"errormessage_"+a;return =
b.getElementById(c)};w_B.ClearError=3Dfunction(a){var =
b=3Dw_B.pb(a);if(b){b.innerHTML=3D"";b.className=3Dw_B.ERROR_MSG_INACTIVE=
_CLASS}};w_B.SetError=3Dfunction(a,b,c){var =
d=3Dw_B.pb(a,c);if(d){d.innerHTML=3Db;d.className=3Dw_B.ERROR_MSG_ACTIVE_=
CLASS}};w_B.GetRequiredStringFilter=3D=0A=
function(){return =
function(a){a=3Da.replace(/^\s+/,"").replace(/\s+$/,"");if(a.length=3D=3D=
0)return LayoutsMessages.FIELD_CANNOT_BE_BLANK;return =
undefined}};w_B.GetNumberFilter=3Dfunction(a,b){return function(c){var =
d=3DparseInt(c,10);if(isNaN(d))return =
LayoutsMessages.MUST_SPECIFY_A_NUMBER;if(d<a)return =
LayoutsMessages.NUMBER_TOO_SMALL+" "+a;if(d>b)return =
LayoutsMessages.NUMBER_TOO_LARGE+" "+b;return undefined}};function =
w_A(){this.p=3D[];for(var a in =
w_.$b)this.p[this.p.length]=3Da}w_A.DEFAULT_DICTIONARY_KEY=3D=0A=
"";w_A.MAX_DICTIONARY_DEPTH=3D50;w_A.SEPARATOR_CHAR=3D".";w_A.prototype.M=
=3Dfunction(a,b){if(this.p.length>=3Dw_A.MAX_DICTIONARY_DEPTH)w_t.raise("=
Cannot add another dictionary: =
"+a);if(a.indexOf(w_A.SEPARATOR_CHAR)>-1)w_t.raise("Cannot add =
dictionary name containing '.': "+a);var =
c=3D{};c.name=3Da;c.data=3Db;this.p[this.p.length]=3Dc};w_A.prototype.va=3D=
function(a){var =
b=3Dthis.p[this.p.length-1];if(b.name!=3Da)w_t.raise("Dictionary "+a+" =
is not the last one, and can't be deleted: =
"+b.name);this.p.splice(this.p.length-=0A=
1,1)};w_A.prototype.V=3Dfunction(a){if(a=3D=3Dnull)a=3Dw_A.DEFAULT_DICTIO=
NARY_KEY;for(var =
b=3Dthis.p.length-1;b>=3D0;--b)if(this.p[b].name=3D=3Da)return =
this.p[b].data;return null};w_A.prototype.ka=3Dfunction(){return =
this.V(w_A.DEFAULT_DICTIONARY_KEY)};w_A.prototype.ab=3Dfunction(a){this.M=
(w_A.DEFAULT_DICTIONARY_KEY,a)};w_A.prototype.i=3Dfunction(a){var =
b=3Dthis.V(a);if(b)return b;var =
c=3Da.split(w_A.SEPARATOR_CHAR);if(c.length=3D=3D1){b=3Dthis.ka();return =
b[a]}b=3Dthis.V(c[0]);var d=3D0;if(b)d=3D1;else b=3Dthis.ka();for(var =
e=3Dd;e<c.length;e++){if(b=3D=3D=0A=
null)return null;b=3Db[c[e]]}return b};function =
w_Ba(){}w_Ba.prototype.c=3Dfunction(){throw new =
Error("Unimplemented");};var =
_WidgetManager=3Dw_;_WidgetManager.prototype=3Dw_.prototype;_WidgetManage=
r._Init=3D_WidgetManager.Init;_WidgetManager._SetPageActionUrl=3D_WidgetM=
anager.SetPageActionUrl;_WidgetManager._GetPageActionUrl=3D_WidgetManager=
.GetPageActionUrl;_WidgetManager._SetWidgetRefreshUrl=3D_WidgetManager.Se=
tWidgetRefreshUrl;_WidgetManager._GetWidgetRefreshUrl=3D_WidgetManager.Ge=
tWidgetRefreshUrl;_WidgetManager._GetCallbackUrl=3D=0A=
_WidgetManager.GetCallbackUrl;_WidgetManager._DeleteWidgetFromPage=3D_Wid=
getManager.DeleteWidgetFromPage;_WidgetManager._DisplayWidget=3D_WidgetMa=
nager.DisplayWidget;_WidgetManager._GetWidget=3D_WidgetManager.GetWidget;=
_WidgetManager._HandleControllerResult=3D_WidgetManager.c;_WidgetManager.=
_HandlePageActionResult=3D_WidgetManager.HandlePageActionResult;_WidgetMa=
nager._IsOpenerReachable=3D_WidgetManager.IsOpenerReachable;_WidgetManage=
r._SetConfigWin=3D_WidgetManager.SetConfigWin;var =
_WidgetInfo=3Dw_x;_WidgetInfo.prototype=3D=0A=
w_x.prototype;function =
w_C(a){this.Lc=3Dfalse;this.fa=3Da;this.aa=3Dwindow.document}w_C.DISABLED=
_BUTTON_CLASS=3D"disabled-button";w_C.HIDDEN_MESSAGE_CLASS=3D"status-msg-=
hidden";w_C.prototype.ga=3Dfunction(){this.aa.getElementById(this.fa+"-in=
ner").innerHTML=3D"&nbsp;";w_p(this.aa.getElementById(this.fa),w_C.HIDDEN=
_MESSAGE_CLASS)};w_C.prototype.o=3Dfunction(a){this.aa.getElementById(thi=
s.fa+"-inner").innerHTML=3Da;w_q(this.aa.getElementById(this.fa),w_C.HIDD=
EN_MESSAGE_CLASS)};function w_Aa(a){return function(b){var =
c=3Dw_va(b);if(c>=3D500){if(b.responseText.length)document.body.innerHTML=
=3Db.responseText;else alert(LayoutsMessages.SERVER_ERROR);return =
false}if(a)return a(b);else return true}};function =
w_D(a){this.a=3Da}w_D.WIDGET_TYPE_NAME=3D"AdSense";w_D.prototype.d=3Dfunc=
tion(){return w_D.WIDGET_TYPE_NAME};w_D.prototype.b=3Dfunction(){return =
this.a};w_D.prototype.c=3Dfunction(a,b){this.a.h(b)};var =
_AdSenseView=3Dw_D;function =
w_E(a){this.a=3Da;this.e=3Da.k()}w_E.WIDGET_TYPE_NAME=3D"BlogArchive";w_E=
.POST_LIST_CLASS=3D"posts";w_E.INTERVAL_EXPANDED_VALUE=3D"expanded";w_E.I=
NTERVAL_COLLAPSED_VALUE=3D"collapsed";w_E.LOADING_MSG=3D"loading...";w_E.=
POST_COUNT_CLASS=3D"post-count";w_E.POST_COUNT_LINK_CLASS=3D"post-count-l=
ink";w_E.MENU_ROOT_ID=3D"ArchiveMenu";w_E.TOGGLE_OPEN_CLASS=3D"toggle-ope=
n";w_E.yc=3D"&#9660;&nbsp;";w_E.Xb=3D"&#9658;&nbsp;";w_E.prototype.d=3Dfu=
nction(){return =
w_E.WIDGET_TYPE_NAME};w_E.prototype.b=3Dfunction(){return =
this.a};w_E.prototype.f=3D=0A=
function(){return =
false};w_E.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b);=
else =
if(a=3D=3D"getTitles")this.Pb(b);else{this.widgetInfo.data=3Db;w_.Display=
Widget(this)}};w_E.prototype.j=3Dfunction(){var =
a=3D{};a.select=3Dfunction(i){return i&&w_o(i,"toggle")};var =
b=3Dthis.a.r("ArchiveList");if(!b)return;var =
c=3Dw_r(this.e.rootElement,a),d;if(c.length>0&&c[0].currentStyle)d=3Dc[0]=
.parentNode.currentStyle.color;for(var e=3D0;e<c.length;e++){var =
f=3Dc[e];f.onclick=3Dthis.Mb.bind(this);if(d)f.style.color=3Dd}var =
g=3Dthis.a.r(w_E.MENU_ROOT_ID);=0A=
if(g){for(var e=3D1;e<g.options.length;e++){var =
h=3Dg.options[e].value;if(h=3D=3Dwindow.location.href||window.location.hr=
ef.match(h)!=3Dnull){g.selectedIndex=3De;break}}g.onchange=3Dthis.rb.bind=
(this)}if(this.b().i().languageDirection=3D=3D"rtl")w_E.Xb=3D"&#9668;&nbs=
p;"};w_E.prototype.rb=3Dfunction(){var =
a=3Dthis.a.r(w_E.MENU_ROOT_ID);if(!a)return;if(a.value=3D=3D"")return;win=
dow.location.href=3Da.value};w_E.prototype.Mb=3Dfunction(a){a=3Da||window=
.event;var =
b=3Da.currentTarget||a.srcElement;if(b&&!w_o(b,"toggle"))b=3Db.parentNode=
;var c=3D=0A=
w_.GetFirstElementInElementWithClass(b,"zippy"),d=3Db.parentNode;if(w_o(d=
,w_E.INTERVAL_EXPANDED_VALUE)){w_q(d,w_E.INTERVAL_EXPANDED_VALUE);w_p(d,w=
_E.INTERVAL_COLLAPSED_VALUE);c.innerHTML=3Dw_E.Xb;w_q(c,w_E.TOGGLE_OPEN_C=
LASS);return =
false}else{w_q(d,w_E.INTERVAL_COLLAPSED_VALUE);w_p(d,w_E.INTERVAL_EXPANDE=
D_VALUE);c.innerHTML=3Dw_E.yc;w_p(c,w_E.TOGGLE_OPEN_CLASS)}if(this.xb(d))=
{var =
e=3Dthis.la(d);if(!e){e=3Ddocument.createElement("UL");d.appendChild(e);w=
_p(e,w_E.POST_LIST_CLASS)}e.appendChild(document.createTextNode(w_E.LOADI=
NG_MSG));=0A=
this.a.v("getTitles",{path:this.nb(d)})}return =
false};w_E.prototype.la=3Dfunction(a){return =
w_.GetFirstElementInElementWithClass(a,w_E.POST_LIST_CLASS)};w_E.prototyp=
e.nb=3Dfunction(a){var =
b=3Dw_.GetFirstElementInElementWithClass(a,w_E.POST_COUNT_LINK_CLASS);ret=
urn b.href};w_E.prototype.ob=3Dfunction(a){var =
b=3Dw_.GetFirstElementInElementWithClass(a,w_E.POST_COUNT_CLASS);return =
parseInt(b.innerHTML.match(/\d+/),10)};w_E.prototype.Pb=3Dfunction(a){var=
 b=3Da.path,c=3Dthis.la(this.mb(b));c.innerHTML=3D"";for(var d=3D0;d<=0A=
a.posts.length;d++){var =
e=3Da.posts[d],f=3Ddocument.createElement("li");f.innerHTML=3D"<a =
href=3D"+e.url+">"+e.title+"</a>";c.appendChild(f)}};w_E.prototype.mb=3Df=
unction(a){var b=3Dthis.e.rootElement.getElementsByTagName("A");for(var =
c in b){var d=3Db[c];if(d.href=3D=3Da)return =
d.parentNode}};w_E.prototype.xb=3Dfunction(a){var =
b=3Da.getElementsByTagName("UL");if(b.length>0&&!w_o(b[0],"posts"))return=
;var c=3Dthis.ob(a),d=3Da.getElementsByTagName("LI"),e=3Dd.length;return =
e<c};var _BlogArchiveView=3Dw_E;function =
w_F(a){this.a=3Da;this.K=3Da.k();if(this.K.data)this.jc=3Dthis.K.data.sho=
wBacklinks}w_F.BACKLINKS_ROOT=3D"backlinks-container";w_F.BACKLINKS_CHUNK=
=3D"backlinks";w_F.BACKLINK_ITEM_ROOT_CLASS=3D"backlink-control";w_F.BACK=
LINK_EXPANDED_CLASS=3D"expanded-backlink";w_F.BACKLINK_COLLAPSED_CLASS=3D=
"collapsed-backlink";w_F.BACKLINK_ZIPPY_CLASS=3D"backlink-toggle-zippy";w=
_F.WIDGET_TYPE_NAME=3D"Blog";w_F.prototype.d=3Dfunction(){return =
w_F.WIDGET_TYPE_NAME};w_F.prototype.b=3Dfunction(){return =
this.a};w_F.prototype.c=3Dfunction(a,=0A=
b){if(a=3D=3D"initial"){this.K.data=3Db;w_.DisplayWidget(this,true)}else =
if(a=3D=3D"nextposts")this.fb(b);else =
if(a=3D=3D"configure")this.a.h(b);else =
if(a=3D=3D"backlinks")this.Ob(b)};w_F.prototype.fb=3Dfunction(a){var =
b=3Da.renderedData,c=3Dthis.K.rootElement;if(!b||!c)return;c.innerHTML=3D=
b;window.scroll(0,0);this.j()};w_F.prototype.Ob=3Dfunction(a){this.jc=3Df=
alse;var =
b=3Dthis.a.X(w_F.BACKLINKS_CHUNK,a),c=3Dthis.a.r(w_F.BACKLINKS_ROOT);if(c=
){c.innerHTML=3D"";c.appendChild(b)}var =
d=3Dw_r(this.K.rootElement,w_F.Sb);for(var e=3D0;e<d.length;e++){var f=3D=0A=
d[e];f.onclick=3Dthis.Nb.bind(this)}var =
g=3Dthis.a.r("backlinks-create-link");if(g!=3Dnull)g.onclick=3Dthis.cb.bi=
nd(this,g.href)};w_F.Sb=3D{};w_F.Sb.select=3Dfunction(a){return =
a&&w_o(a,w_F.BACKLINK_ZIPPY_CLASS)};w_F.prototype.Nb=3Dfunction(a){a=3Da|=
|window.event;this.gb(a.srcElement||a.target)};w_F.prototype.gb=3Dfunctio=
n(a){var =
b=3Da.parentNode;while(b&&!w_o(b,w_F.BACKLINK_ITEM_ROOT_CLASS))b=3Db.pare=
ntNode;if(!b)return;if(w_o(b,w_F.BACKLINK_EXPANDED_CLASS)){w_q(b,w_F.BACK=
LINK_EXPANDED_CLASS);w_p(b,w_F.BACKLINK_COLLAPSED_CLASS)}else{w_p(b,=0A=
w_F.BACKLINK_EXPANDED_CLASS);w_q(b,w_F.BACKLINK_COLLAPSED_CLASS)}};w_F.pr=
ototype.j=3Dfunction(){var =
a=3Dthis.a.r("blog-pager-newer-link");if(a&&this.oa(a))a.onclick=3Dthis.q=
a.bind(this);var =
b=3Dthis.a.r("blog-pager-older-link");if(b&&this.oa(b))b.onclick=3Dthis.q=
a.bind(this);if(this.jc)this.a.v("backlinks",{postID:this.K.data.postId})=
};w_F.prototype.oa=3Dfunction(a){var b=3Da.href;return =
b.indexOf("/search?")>-1};w_F.prototype.qa=3Dfunction(a){a=3Da||window.ev=
ent;var b=3Da.target||a.srcElement;this.a.v("nextposts",{path:b.href});=0A=
return false};w_F.prototype.cb=3Dfunction(a){var =
b=3D"";if(document.selection)b=3Ddocument.selection.createRange().text;el=
se if(window.getSelection)b=3Dwindow.getSelection();else =
if(document.getSelection)b=3Ddocument.getSelection();window.open(a+"?t=3D=
"+encodeURIComponent(b)+"&u=3D"+encodeURIComponent(window.location.href)+=
"&n=3D"+encodeURIComponent(document.title),"bloggerForm","scrollbars=3Dno=
,width=3D475,height=3D300,top=3D175,left=3D75,status=3Dyes,resizable=3Dye=
s");return false};var _BlogView=3Dw_F;function =
w_G(a){this.a=3Da;this.e=3Da.k()}w_G.WIDGET_TYPE_NAME=3D"BlogList";w_G.pr=
ototype.d=3Dfunction(){return =
w_G.WIDGET_TYPE_NAME};w_G.prototype.b=3Dfunction(){return =
this.a};w_G.prototype.f=3Dfunction(){return =
false};w_G.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}=
;var =
_BlogListView=3Dw_G;_BlogListView._Configure=3D_BlogListView.Configure;fu=
nction =
w_H(a){this.a=3Da}w_H.WIDGET_TYPE_NAME=3D"CustomSearch";w_H.prototype.d=3D=
function(){return =
w_H.WIDGET_TYPE_NAME};w_H.prototype.b=3Dfunction(){return =
this.a};w_H.prototype.f=3Dfunction(){return =
false};w_H.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}=
;w_H.prototype.j=3Dfunction(){if(!window._UDS_bootstrapped){var =
a;if(window.location.host.match(/blogger\.com$/))a=3D"ABQIAAAAVBJEtyJuLxg=
Us8KlzeA1lRQpkWYODHKIJGlKH8M-8R98XOejsxRkHYkMWejKfPos1RBuAqHID9wA9Q";else=
 =
a=3Dthis.a.i().key;w_I("http://www.google.com/uds/api?file=3Duds.js&v=3D1=
.0&source=3Duds-vbpe&key=3D"+=0A=
a);w_J(w_Ca);window._UDS_bootstrapped=3Dtrue}var =
b=3Ddocument.getElementById("uds-searchControl");if(!b){b=3Ddocument.crea=
teElement("DIV");b.id=3D"uds-searchControl";var =
c=3Ddocument.createElement("DIV");c.id=3D"uds-searchResults";b.appendChil=
d(c);var =
d=3Ddocument.createElement("DIV");d.id=3D"uds-searchClearResults";d.class=
Name=3D"gsc-clear-button";d.innerHTML=3D"&nbsp;";b.appendChild(d);var =
e=3Ddocument.getElementById("main");if(!e)e=3Ddocument.getElementsByTagNa=
me("body")[0];e.insertBefore(b,e.firstChild)}var f=3Dthis.b();=0A=
if(!w_K())w_J(w_Da.bind(f));else =
window.setTimeout(w_Da.bind(f),0)};function w_Da(){var a=3Dnew =
GSearchControl,b=3Dthis.i();if(b.includeBlog){var c=3Dnew =
GblogSearch;c.setUserDefinedLabel(b.thisBlogMsg);c.setSiteRestriction(b.b=
logUrl);a.addSearcher(c)}if(b.includePostLinks){var d=3Dnew =
GwebSearch;d.setUserDefinedLabel(b.linkedFromHereMsg);d.setSiteRestrictio=
n({crefUrl:b.blogUrl+"cse.xml"});a.addSearcher(d)}var =
e=3Db.linkLists;for(var f=3D0;f<e.length;f++){var g=3Dnew =
GwebSearch;g.setSiteRestriction({crefUrl:b.blogUrl+=0A=
"cse.xml"},e[f].id.toLowerCase());g.setUserDefinedLabel(e[f].title);a.add=
Searcher(g)}if(b.includeWeb){var h=3Dnew =
GwebSearch;h.setUserDefinedLabel(b.theWebMsg);a.addSearcher(h)}var =
i=3Dnew GSearchForm(false,this.z("form")),j=3Dnew =
GdrawOptions;j.setDrawMode(GSearchControl.DRAW_MODE_TABBED);j.setInput(i.=
input);a.setNoResultsString(GSearchControl.NO_RESULTS_DEFAULT_STRING);a.d=
raw(document.getElementById("uds-searchResults"),j);i.input.onkeyup=3D(i.=
input.onpaste=3Dnull);i.setOnSubmitCallback(null,w_w(w_Ea,null,=0A=
a));document.getElementById("uds-searchClearResults").onclick=3Dw_w(w_Fa,=
null,a);w_L(false)}function w_Ea(a){w_L(true);return a.submit()}function =
w_Fa(a){a.clearAllResults();w_L(false)}function =
w_L(a){document.getElementById("uds-searchClearResults").style.display=3D=
a?"inline":"none"}var =
_CustomSearchView=3Dw_H;_CustomSearchView._Configure=3D_CustomSearchView.=
Configure;function =
w_M(a){this.a=3Da;this.e=3Da.k()}w_M.WIDGET_TYPE_NAME=3D"Image";w_M.proto=
type.b=3Dfunction(){return this.a};w_M.prototype.d=3Dfunction(){return =
w_M.WIDGET_TYPE_NAME};w_M.prototype.f=3Dfunction(){return =
false};w_M.prototype.j=3Dfunction(){if(this.e.data.resize!=3D"true")retur=
n;var =
a=3Dthis.a.r(this.e.instanceId+"_img"),b=3Dthis.e.rootElement;if(!a||!b)r=
eturn;var =
c;if(document.defaultView)c=3DparseInt(document.defaultView.getComputedSt=
yle(b,null).width,10);else =
if(b.currentStyle){a.style.display=3D"none";c=3Db.offsetWidth;=0A=
a.style.display=3D""}else =
return;if(a.width>c){a.height=3DMath.round(c/a.width*a.height);a.width=3D=
c}a.style.visibility=3D"visible"};w_M.prototype.c=3Dfunction(a,b){if(a=3D=
=3D"configure")this.a.h(b)};var _ImageView=3Dw_M;function =
w_N(a,b,c,d,e,f,g,h){this.n=3Da;this.Tb=3Db!=3D"null"?b:null;this.ec=3Dc;=
this.cc=3Dd;this.dc=3De;this.pc=3Df;this.fc=3Dg;this.Fc=3Dh;this.u=3D-1;t=
his.B=3D-1;this.C=3Dnull;this.q=3Ddocument.getElementById(this.n+"_picImg=
");this.$=3Ddocument.getElementById(this.n+"_changeImageLink");this.da=3D=
document.getElementById(this.n+"_imageChoiceTable");this.ac=3Ddocument.ge=
tElementById(this.n+"_imgSrcFromPCRadio");this.bc=3Ddocument.getElementBy=
Id(this.n+"_imgSrcFromWebRadio");this.g=3Ddocument.getElementById(this.n+=
"_imgFileNameInput");=0A=
this.R=3Ddocument.getElementById(this.n+"_imgUrlTextInput");this.Rb=3Dwin=
dow.frames[this.n+"_asynchronousFileUploadIframe"];this.La=3D0;this.l=3Dn=
ew =
Image;this.l.onload=3Dthis.hitch(this,this.mc);this.l.onerror=3Dthis.hitc=
h(this,this.lc);this.Yb=3Dfalse;this.Pa=3Dnull;this.m=3Dnull;this.H=3Dnul=
l;this.Ta=3Dfalse}w_N.prototype.Oa=3Dfunction(){return =
this.ac.checked};w_N.prototype.mc=3Dfunction(){this.La=3D0;w_B.ClearError=
(this.n+"_imgUrlTextError");w_B.ClearError(this.n+"_imgFileNameError");if=
(!this.Oa()||this.u=3D=3D0){this.u=3Dthis.l.width;=0A=
this.B=3Dthis.l.height;this.C=3Dthis.l.src}var =
a=3D1,b=3D1;if(this.l.width>300)a=3D300/this.l.width;if(this.l.height>300=
)b=3D300/this.l.height;var =
c=3DMath.min(a,b);this.q.style.width=3DMath.round(this.l.width*c)+"px";th=
is.q.style.height=3DMath.round(this.l.height*c)+"px";this.q.src=3Dthis.l.=
src;this.q.style.display=3D"";this.da.style.display=3D"none";this.$.style=
.display=3D"";this.g.disabled=3Dtrue;if(this.ec)this.ec.call({},this.q.sr=
c,this.C,this.u,this.B)};w_N.prototype.J=3Dfunction(a,b,c,d){if(a){w_B.Se=
tError(this.n+"_imgFileNameError",=0A=
b);w_B.ClearError(this.n+"_imgUrlTextError")}else{w_B.SetError(this.n+"_i=
mgUrlTextError",b);w_B.ClearError(this.n+"_imgFileNameError")}this.q.styl=
e.display=3D"none";this.da.style.display=3D"";this.$.style.display=3D"non=
e";this.g.disabled=3Dfalse;if(this.cc)this.cc.call({},c,d)};w_N.prototype=
.lc=3Dfunction(){if(this.La<2){this.La++;var =
a=3Dthis.l.src;this.l.src=3D"";this.D(a)}else =
this.J(this.Oa(),WidgetMessages.SIV_INVALID_URL,this.q.src)};w_N.prototyp=
e.hitch=3Dfunction(a,b){return function(){b.apply(a,arguments)}};=0A=
w_N.prototype.D=3Dfunction(a){this.Xa();this.l.src=3Da};w_N.prototype.Ha=3D=
function(a){var =
b=3Da||window.event;if(window.event){b.returnValue=3Dfalse;b.cancelBubble=
=3Dtrue}else{b.preventDefault();b.stopPropagation()}this.q.style.display=3D=
"none";this.$.style.display=3D"none";this.da.style.display=3D"";this.g.di=
sabled=3Dfalse;this.R.value=3D"";this.Ua();this.Ta=3Dtrue;if(this.dc)this=
.dc.call({})};w_N.prototype.Ma=3Dfunction(){this.ac.checked=3D"true";this=
.R.value=3D"";this.Xa();this.hc();this.Yb=3Dtrue;try{this.m.submit()}catc=
h(a){this.J(true,=0A=
WidgetMessages.SIV_INVALID_URL,this.m.value)}this.gc()};w_N.prototype.G=3D=
function(){var =
a=3Dthis.Rb.document.result;if(!a)this.J(true,WidgetMessages.SIV_INVALID_=
URL,this.g.value);if(a.hasErrors)if(a.errors.length>0)this.J(true,a.error=
s[0].message,this.g.value,a.Ac);else =
this.J(true,WidgetMessages.SIV_INVALID_URL,this.g.value,a.Ac);else{var =
b=3DMath.max(a.origWidth,a.origHeight),c=3Dthis.Ka();if(this.u!=3D0&&c!=3D=
-1&&b>c){var =
d=3Dc/b;this.u=3DMath.round(a.origWidth*d);this.B=3DMath.round(a.origHeig=
ht*d)}else{this.u=3D=0A=
a.origWidth;this.B=3Da.origHeight}this.C=3Da.mainSrc;this.D(a.thumbSrc)}}=
;w_N.prototype.Na=3Dfunction(a){var =
b=3Da||window.event;if(b.keyCode=3D=3D9)return;this.bc.checked=3D"true";i=
f(this.Pa!=3Dnull)window.clearTimeout(this.Pa);var =
c=3Dthis.hitch(this,function(){if(this.Ta||this.l.src!=3Dthis.R.value.toL=
owerCase()){this.Ua();this.D(this.R.value.toLowerCase())}this.Ta=3Dfalse}=
);this.Pa=3Dwindow.setTimeout(c,1000)};w_N.prototype.Qa=3Dfunction(a){thi=
s.bc.checked=3Dtrue;this.R.value=3Da;this.D(a)};w_N.prototype.Xa=3Dfuncti=
on(){this.q.src=3D=0A=
"img/icon_inprogress.gif";this.q.style.width=3D"200px";this.q.style.heigh=
t=3D"200px";this.q.style.display=3D"";this.da.style.display=3D"none";this=
.$.style.display=3D"none"};w_N.prototype.hc=3Dfunction(){if(!this.m){this=
.m=3Ddocument.createElement("form");this.m.action=3D"imageUpload.do";this=
.m.method=3D"POST";this.m.target=3Dthis.Rb.name;this.m.encoding=3D"multip=
art/form-data";this.m.style.display=3D"none";if(this.Tb){var =
a=3Ddocument.createElement("input");a.type=3D"hidden";a.name=3D"blogID";a=
.value=3Dthis.Tb;this.m.appendChild(a)}var b=3D=0A=
document.createElement("input");b.type=3D"hidden";b.name=3D"sectionWidth"=
;b.id=3D"sectionWidth";this.m.appendChild(b);var =
c=3Ddocument.createElement("input");c.type=3D"hidden";c.name=3D"photoUplo=
adSecurityToken";c.value=3Dthis.Fc;this.m.appendChild(c);document.body.ap=
pendChild(this.m)}var =
d=3Dthis.Ka();if(d=3D=3D-1)d=3D1600;document.getElementById("sectionWidth=
").value=3Dd;this.H=3D{parent:this.g.parentNode,nextSibling:this.g.nextSi=
bling};this.g.parentNode.removeChild(this.g);this.m.appendChild(this.g)};=
w_N.prototype.gc=3Dfunction(){this.m.removeChild(this.g);=0A=
if(this.H&&this.H.nextSibling)this.H.parent.insertBefore(this.g,this.H.ne=
xtSibling);else =
this.H.parent.appendChild(this.g)};w_N.prototype.Ua=3Dfunction(){var =
a=3Ddocument.createElement("input");a.type=3D"file";a.name=3Dthis.g.name;=
a.id=3Dthis.g.id;a.onchange=3Dthis.g.onchange;var =
b=3Dthis.g.nextSibling;if(b=3D=3Dnull)this.g.parentNode.appendChild(a);el=
se =
this.g.parentNode.insertBefore(a,b);this.g.parentNode.removeChild(this.g)=
;this.g=3Da};w_N.prototype.Ka=3Dfunction(){if(this.pc=3D=3D-1&&this.fc)re=
turn this.fc();else return this.pc};=0A=
function w_O(){this.usiContainers=3D[]}var w_Ga=3Dnew =
w_O;w_O.prototype.Ia=3Dfunction(a,b,c,d,e,f,g,h){this.usiContainers[a]=3D=
new w_N(a,b,eval(c),eval(d),eval(e),f,eval(g),h);return =
this.usiContainers[a]};w_O.prototype.ca=3Dfunction(a){return =
this.usiContainers[a]};w_O.prototype.G=3Dfunction(a){var =
b=3Dthis.ca(a);if(b&&b.Yb)b.G()};var =
_UploadSimpleImage=3Dw_Ga;w_O.prototype._createUsiContainer=3Dw_O.prototy=
pe.Ia;w_O.prototype._getUsiContainer=3Dw_O.prototype.ca;w_O.prototype._ch=
annelResultArrived=3Dw_O.prototype.G;w_N.prototype._changeImage=3D=0A=
w_N.prototype.Ha;w_N.prototype._imgUrlFileOnChange=3Dw_N.prototype.Ma;w_N=
.prototype._imgUrlTextOnKeyUp=3Dw_N.prototype.Na;w_N.prototype._loadIniti=
alUrl=3Dw_N.prototype.Qa;w_N.prototype._loadImageFromUrl=3Dw_N.prototype.=
D;function =
_singleImageConfig_successfulUploadCallback(a,b,c,d){window.singleImageCo=
nfig_thumbImageUrl=3Da;window.singleImageConfig_imageUrl=3Db;window.singl=
eImageConfig_imageWidth=3Dc;window.singleImageConfig_imageHeight=3Dd;var =
e=3Ddocument.getElementById("shrinkToFitRow");if(e)e.style.visibility=3D"=
hidden"}function =
_singleImageConfig_resetCallback(){window.singleImageConfig_imageUrl=3Dnu=
ll;var =
a=3Ddocument.getElementById("shrinkToFitRow");if(a)a.style.visibility=3D"=
visible"}function =
_SIV_getScaledContainerWidth(){if(document.getElementById("checkShrink").=
checked)return _SIV_getContainerWidth();=0A=
else return-1}function _SIV_getContainerWidth(){var =
a=3Ddocument.getElementById("sectionId").value,b=3D150;if(w_.IsOpenerReac=
hable(window)&&window.opener.document.getElementById(a))b=3Dwindow.opener=
.document.getElementById(a).clientWidth;return b}function =
_SIV_setConfigurationOptions(){if(window.singleImageConfig_imageUrl=3D=3D=
null){w_.o(window,WidgetMessages.SIV_NO_IMAGE,w_.STATUS_MESSAGE_BAD_CLASS=
);return}var =
a=3Ddocument.forms.config.widgetId.value,b=3D_SIV_getContainerWidth(),c=3D=
document.getElementById("checkShrink").checked,=0A=
d=3Dwindow.singleImageConfig_imageWidth,e=3Dwindow.singleImageConfig_imag=
eHeight;if(c){var f=3D1;if(d>b){f=3Db/d;d=3Db;e=3DMath.round(e*f)}}var =
g=3D{originalUrl:window.singleImageConfig_imageUrl,originalWidth:window.s=
ingleImageConfig_imageWidth,originalHeight:window.singleImageConfig_image=
Height,displayUrl:window.singleImageConfig_thumbImageUrl,displayWidth:d,d=
isplayHeight:e,sectionWidth:b,shrinkToFit:c,title:document.getElementById=
("title").value,caption:document.getElementById("imageCaption").value,sec=
urityToken:document.forms.config.securityToken.value};=0A=
w_.SaveWidget(g,a,w_M.WIDGET_TYPE_NAME)};function =
w_P(a){this.a=3Da;this.e=3Da.k()}w_P.successfulUploadCallback=3Dfunction(=
a,b,c,d){w_P.Gc=3Da;w_P.C=3Db;w_P.u=3Dc;w_P.B=3Dd;var =
e=3Ddocument.getElementById("shrinkToFitRow");if(e)e.style.visibility=3D"=
hidden";e=3Ddocument.getElementById("shrinkToFitMessageRow");if(e)e.style=
.visibility=3D"hidden"};w_P.resetCallback=3Dfunction(){w_P.C=3Dnull;var =
a=3Ddocument.getElementById("shrinkToFitRow");if(a)a.style.visibility=3D"=
visible";a=3Ddocument.getElementById("shrinkToFitMessageRow");if(a)a.styl=
e.visibility=3D"visible"};w_P.getScaledContainerWidth=3D=0A=
function(){if(document.getElementById("checkShrink").checked)return =
w_P.getContainerWidth();else =
return-1};w_P.getContainerWidth=3Dfunction(){var =
a=3Ddocument.getElementById("sectionId").value,b=3D600;if(w_.IsOpenerReac=
hable(window)&&window.opener.document.getElementById(a))b=3Dwindow.opener=
.document.getElementById(a).clientWidth;return =
b};w_P.WIDGET_TYPE_NAME=3D"Header";w_P.prototype.d=3Dfunction(){return =
w_P.WIDGET_TYPE_NAME};w_P.prototype.f=3Dfunction(){return =
false};w_P.prototype.b=3Dfunction(){return this.a};=0A=
w_P.prototype.c=3Dfunction(a,b){this.a.h(b)};w_P.FilterMap=3D{title:w_B.G=
etRequiredStringFilter(),description:null,imagePlacement:null,useImage:nu=
ll,securityToken:null};w_P.ConfigureWidget=3Dfunction(){var =
a=3Ddocument.forms.config.widgetId.value,b=3Ddocument.forms.config.widget=
Type.value,c=3Dw_B.ProcessForm(document.forms.config,w_P.FilterMap),d=3Dw=
_P.getContainerWidth();if(c.success){if(w_P.C){var =
e=3Dw_P.u,f=3Dw_P.B,g=3Ddocument.getElementById("checkShrink").checked;if=
(g){var h=3D1;if(e>d){h=3Dd/e;e=3Dd;f=3DMath.round(f*=0A=
h)}}c.values.originalUrl=3Dw_P.C;c.values.originalWidth=3Dw_P.u;c.values.=
originalHeight=3Dw_P.B;c.values.displayUrl=3Dw_P.Gc;c.values.displayWidth=
=3De;c.values.displayHeight=3Df;c.values.sectionWidth=3Dd;c.values.shrink=
ToFit=3Dg}c.values.securityToken=3Ddocument.forms.config.securityToken.va=
lue;w_.SaveWidget(c.values,a,b);return true}else return =
false};w_P.hideImageOptions=3Dfunction(){document.getElementById("imageOp=
tions").style.display=3D"none";return =
false};w_P.showImageOptions=3Dfunction(){document.getElementById("imageOp=
tions").style.display=3D=0A=
"";return false};var =
_HeaderView=3Dw_P;_HeaderView.prototype=3Dw_P.prototype;_HeaderView._Conf=
igureWidget=3D_HeaderView.ConfigureWidget;_HeaderView._hideImageOptions=3D=
_HeaderView.hideImageOptions;_HeaderView._showImageOptions=3D_HeaderView.=
showImageOptions;_HeaderView._successfulUploadCallback=3D_HeaderView.succ=
essfulUploadCallback;_HeaderView._resetCallback=3D_HeaderView.resetCallba=
ck;_HeaderView._getScaledContainerWidth=3D_HeaderView.getScaledContainerW=
idth;_HeaderView._getContainerWidth=3D_HeaderView.getContainerWidth;funct=
ion =
w_Q(a,b){this.a=3Da;this.e=3Da.k();this.Ic=3Db}w_Q.prototype.b=3Dfunction=
(){return this.a};w_Q.prototype.d=3Dfunction(){return =
this.Ic};w_Q.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b=
)};w_Q.ConfigureWidget=3Dfunction(a){setFormAndSubmit();var =
b=3Ddocument.forms.stuffform.widgetId.value,c=3Ddocument.forms.stuffform.=
securityToken.value,d=3Ddocument.getElementById("textarea"),e=3Ddocument.=
getElementById("title"),f=3Dd.value;if(a=3D=3D"Text")f=3Df.replace(/\n/g,=
"<br/>");var g=3D{content:f,title:e.value,securityToken:c};=0A=
w_.SaveWidget(g,b,a)};function =
w_R(a){w_Q.call(this,a,"Text")}w_R.inherits(w_Q);w_R.ConfigureWidget=3Dfu=
nction(){w_Q.ConfigureWidget("Text")};function =
w_S(a){w_Q.call(this,a,"HTML")}w_S.inherits(w_Q);w_S.ConfigureWidget=3Dfu=
nction(){w_Q.ConfigureWidget("HTML")};var =
_TextView=3Dw_R;_TextView.prototype=3Dw_R.prototype;_TextView._ConfigureW=
idget=3D_TextView.ConfigureWidget;var =
_HTMLView=3Dw_S;_HTMLView.prototype=3Dw_S.prototype;_HTMLView._ConfigureW=
idget=3D_HTMLView.ConfigureWidget;function =
w_I(a){document.write('<script src=3D"'+a+'" =
type=3D"text/javascript"><\/script>')}function =
w_Ha(a){document.write('<style type=3D"text/css"> @import url( "'+a+'" =
);</style>')}function w_J(a){if(w_K())w_j("Tried to add an onload after =
page loaded..");else{var =
b=3Dwindow;if(b.addEventListener)b.addEventListener("load",a,false);else =
if(b.attachEvent)b.attachEvent("onload",a);else b.onload=3Da}}function =
w_Ca(){window._UDS_loaded=3Dtrue}function w_K(){return =
window._UDS_loaded}function w_T(a){this.a=3Da}w_T.WIDGET_TYPE_NAME=3D=0A=
"VideoBar";w_T.prototype.d=3Dfunction(){return =
w_T.WIDGET_TYPE_NAME};w_T.prototype.b=3Dfunction(){return =
this.a};w_T.prototype.f=3Dfunction(){return =
false};w_T.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}=
;w_T.prototype.j=3Dfunction(){if(!window._UDS_bootstrapped){var =
a;if(window.location.host.match(/blogger\.com$/))a=3D"ABQIAAAAVBJEtyJuLxg=
Us8KlzeA1lRQpkWYODHKIJGlKH8M-8R98XOejsxRkHYkMWejKfPos1RBuAqHID9wA9Q";else=
 =
a=3Dthis.a.i().key;w_I("http://www.google.com/uds/api?file=3Duds.js&v=3D1=
.0&source=3Duds-vbpe&key=3D"+=0A=
a);w_Ha("http://www.google.com/uds/css/gsearch.css");w_J(w_Ca);window._UD=
S_bootstrapped=3Dtrue}if(!window._UDS_vb_bootstrapped){window._uds_vbw_do=
notrepair=3Dtrue;w_I("http://www.google.com/uds/solutions/videobar/gsvide=
obar.js?mode=3Dnew");w_Ha("http://www.google.com/uds/solutions/videobar/g=
svideobar.css");window._UDS_vb_bootstrapped=3Dtrue}var =
b=3Dthis.b(),c=3Db.z("bar");w_p(c,"videoBar-container");if(!w_K())w_J(w_I=
a.bind(b));else window.setTimeout(w_Ia.bind(b),0)};function w_Ia(){var =
a=3Dthis.z("bar"),b=3Dthis.i().format,=0A=
c,d,e=3Dthis.i().expression;if(b=3D=3D"VERTICAL"){c=3Dfalse;d=3DGSvideoBa=
r.THUMBNAILS_MEDIUM;a.style.width=3D"110px"}else =
if(b=3D=3D"HORIZONTAL-SMALL"){c=3Dtrue;d=3DGSvideoBar.THUMBNAILS_SMALL;a.=
style.width=3D"232px"}else =
if(b=3D=3D"HORIZONTAL-MEDIUM"){c=3Dtrue;d=3DGSvideoBar.THUMBNAILS_MEDIUM;=
a.style.width=3D"432px"}var =
f=3D{largeResultSet:false,horizontal:c,autoExecuteList:{cycleTime:GSvideo=
Bar.CYCLE_TIME_LONG,cycleMode:GSvideoBar.CYCLE_MODE_RANDOM,executeList:e.=
split(/,/)},thumbnailSize:d};new =
GSvideoBar(a,GSvideoBar.PLAYER_ROOT_FLOATING,=0A=
f)}var =
_VideoBarView=3Dw_T;_VideoBarView._Configure=3D_VideoBarView.Configure;fu=
nction w_Ja(a){document.write('<script src=3D"'+a+'" =
type=3D"text/javascript"><\/script>')}function =
w_Ka(a){document.write('<style type=3D"text/css"> @import url( "'+a+'" =
);</style>')}function w_La(a){if(w_Ma())w_j("Tried to add an onload =
after page loaded..");else{var =
b=3Dwindow;if(b.addEventListener)b.addEventListener("load",a,false);else =
if(b.attachEvent)b.attachEvent("onload",a);else b.onload=3Da}}function =
w_Na(){window._UDS_loaded=3Dtrue}function w_Ma(){return =
window._UDS_loaded}function w_U(a){this.a=3D=0A=
a}w_U.WIDGET_TYPE_NAME=3D"NewsBar";w_U.prototype.d=3Dfunction(){return =
w_U.WIDGET_TYPE_NAME};w_U.prototype.b=3Dfunction(){return =
this.a};w_U.prototype.f=3Dfunction(){return =
false};w_U.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}=
;w_U.prototype.j=3Dfunction(){if(!window._UDS_bootstrapped){var =
a;if(window.location.host.match(/blogger\.com$/))a=3D"ABQIAAAAVBJEtyJuLxg=
Us8KlzeA1lRQpkWYODHKIJGlKH8M-8R98XOejsxRkHYkMWejKfPos1RBuAqHID9wA9Q";else=
 =
a=3Dthis.a.i().key;w_Ja("http://www.google.com/uds/api?file=3Duds.js&v=3D=
1.0&source=3Duds-nbpe&key=3D"+=0A=
a);w_Ka("http://www.google.com/uds/css/gsearch.css");w_La(w_Na);window._U=
DS_bootstrapped=3Dtrue}if(!window._UDS_nb_bootstrapped){window._uds_nbw_d=
onotrepair=3Dtrue;w_Ja("http://www.google.com/uds/solutions/newsbar/gsnew=
sbar.js?mode=3Dnew");w_Ka("http://www.google.com/uds/solutions/newsbar/gs=
newsbar.css");window._UDS_nb_bootstrapped=3Dtrue}var =
b=3Dthis.b();if(!w_Ma())w_La(w_Oa.bind(b));else =
window.setTimeout(w_Oa.bind(b),0)};function w_Oa(){var =
a=3Dthis.z("bar"),b,c=3Dthis.i().format;if(c=3D=3D"VERTICAL")b=3Dfalse;el=
se if(c=3D=3D=0A=
"HORIZONTAL-SMALL")b=3Dtrue;else =
if(c=3D=3D"HORIZONTAL-MEDIUM")b=3Dtrue;var =
d=3Dthis.i().expression,e=3Dthis.i().linkNewWindow,f;if(e=3D=3Dtrue)f=3DG=
Search.LINK_TARGET_BLANK;else f=3DGSearch.LINK_TARGET_SELF;var =
g=3D{largeResultSet:false,horizontal:b,linkTarget:f,title:" =
",autoExecuteList:{executeList:d.split(/,/)}};if(b){g.autoExecuteList.cyc=
leTime=3DGSnewsBar.CYCLE_TIME_MEDIUM;g.autoExecuteList.cycleMode=3DGSnews=
Bar.CYCLE_MODE_RANDOM}var h=3Dnew GSnewsBar(a,g);window[a.id]=3Dh}var =
_NewsBarView=3Dw_U;_NewsBarView._Configure=3D_NewsBarView.Configure;funct=
ion w_Pa(a){document.write('<script src=3D"'+a+'" =
type=3D"text/javascript"><\/script>')}function w_Qa(a){var =
b=3Dwindow;if(b.addEventListener)b.addEventListener("load",a,false);else =
if(b.attachEvent)b.attachEvent("onload",a);else b.onload=3Da}function =
w_V(a){this.a=3Da}w_V.WIDGET_TYPE_NAME=3D"Slideshow";w_V.prototype.d=3Dfu=
nction(){return =
w_V.WIDGET_TYPE_NAME};w_V.prototype.b=3Dfunction(){return =
this.a};w_V.prototype.f=3Dfunction(){return =
false};w_V.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}=
;w_V.prototype.j=3D=0A=
function(){if(!window._UDS_jsapi_bootstrapped){var =
a;if(window.location.host.match(/blogger\.com$/))a=3D"ABQIAAAAVBJEtyJuLxg=
Us8KlzeA1lRQpkWYODHKIJGlKH8M-8R98XOejsxRkHYkMWejKfPos1RBuAqHID9wA9Q";else=
 =
a=3Dthis.a.i().key;w_Pa("http://www.google.com/jsapi?source=3Duds-afspe&k=
ey=3D"+a);window._UDS_jsapi_bootstrapped=3Dtrue}if(!window._UDS_fs_bootst=
rapped){w_Pa("http://www.google.com/uds/solutions/slideshow/gfslideshow.j=
s?mode=3Dnew");window._UDS_fs_bootstrapped=3Dtrue}var =
b=3Dthis.b(),c=3Dw_Ra.bind(b);if(!window.google||=0A=
!window.google.feeds)w_Sa(c);else window.setTimeout(c,0)};function =
w_Sa(a){w_Qa(function(){google.load("feeds","1",{callback:a})})}function =
w_Ra(){var =
a=3Dthis.z("slideshow"),b=3Dthis.i().computedFeed,c=3Dthis.i().linkNewWin=
dow,d=3Dc?google.feeds.LINK_TARGET_BLANK:google.feeds.LINK_TARGET_SELF,e=3D=
{linkTarget:d,scaleImages:true,fullControlPanel:true,fullControlPanelSmal=
lIcons:true,pauseOnHover:false};if(b.indexOf("http://api.flickr.com")=3D=3D=
0)e.thumbnailUrlResolver=3Dw_V.flickrThumbResolver;new GFslideShow(b,a,=0A=
e)}w_V.flickrThumbResolver=3Dfunction(a){var =
b=3Dgoogle.feeds.getElementsByTagNameNS(a.xmlNode,"http://search.yahoo.co=
m/mrss/","thumbnail"),c=3Dnull;if(b.length){var =
d=3Db[0];c=3Dd.getAttribute("url");if(!c)c=3Dd.firstChild.nodeValue;c=3Dc=
.replace(/^(.*)_[st]\.([a-zA-Z]+)$/,"$1_m.$2")}return c};var =
_SlideshowView=3Dw_V;_SlideshowView._Configure=3D_SlideshowView.Configure=
;function =
w_W(){}w_W.Bc=3D{title:null,showStyle:null,showPosts:null,chronological:n=
ull,frequency:null,yearPattern:null,monthPattern:null,weekPattern:null,sh=
owWeekEnd:null,dayPattern:null,securityToken:null};w_W.ACTIVE_PREVIEW_CLA=
SS=3D"active-preview";w_W.PREVIEW_CLASS=3D"preview";w_W._SetConfiguration=
Options=3Dfunction(){w_y.ConfigureWidget(w_W.Bc)};w_W.UpdateFrequency=3Df=
unction(){var =
a=3Dw_B.GetFieldValue(document.forms.config.showStyle),b=3D{year:a=3D=3D"=
HIERARCHY",week:0,month:0,day:0},c=3Dw_B.GetFieldValue(document.forms.con=
fig.frequency);=0A=
if(c=3D=3D"WEEKLY")b.week=3D1;else if(c=3D=3D"MONTHLY")b.month=3D1;else =
if(c=3D=3D"DAILY"){b.month=3Da=3D=3D"HIERARCHY";b.day=3D1}var =
d=3Ddocument.forms.config.showPosts;if(a=3D=3D"HIERARCHY")d.disabled=3Dfa=
lse;else d.disabled=3Dtrue;for(var e in b){var =
f=3De+"pattern-wrap";w_ha(document.getElementById(f),b[e])}w_W.SelectPrev=
iew()};w_W._Init=3Dfunction(a){w_W.oc=3Da;w_W.I=3Ddocument.getElementById=
("archive-previews");w_W.nc=3Dw_X(w_W.I,w_W.PREVIEW_CLASS);w_W.UpdateFreq=
uency();w_W.Reformat("yearly",document.forms.config.yearPattern);w_W.Refo=
rmat("monthly",=0A=
document.forms.config.monthPattern);w_W.Reformat("weekly",document.forms.=
config.weekPattern);w_W.Reformat("daily",document.forms.config.dayPattern=
);w_W.UpdateWeekEnd();w_W.UpdatePreviewPostTitles();if(document.forms.con=
fig.chronological.checked)w_W.ToggleDirection()};w_W.SelectPreview=3Dfunc=
tion(){var =
a=3Dw_B.GetFieldValue(document.forms.config.showStyle),b=3Dw_B.GetFieldVa=
lue(document.forms.config.frequency);for(var =
c=3D0;c<w_W.nc.length;c++){var =
d=3Dw_W.nc[c];if(w_o(d,a)&&w_o(d,b)){w_p(d,w_W.ACTIVE_PREVIEW_CLASS);=0A=
if(w_o(d,"MENU"))w_W.wc(d)}else{w_q(d,w_W.ACTIVE_PREVIEW_CLASS);if(w_o(d,=
"MENU"))w_W.tc(d)}}};w_W.tc=3Dfunction(a){var =
b=3Da.getElementsByTagName("select");for(var =
c=3D0;c<b.length;c++)b[c].style.display=3D"none"};w_W.wc=3Dfunction(a){va=
r b=3Da.getElementsByTagName("select");for(var =
c=3D0;c<b.length;c++)b[c].style.display=3D"block"};w_W.Reformat=3Dfunctio=
n(a,b){var c=3Dw_W.oc[a];for(var d in c){var =
e=3Dc[d][b.selectedIndex];if(e)w_W.ReplaceSample(d,e)}if(a=3D=3D"weekly")=
w_W.UpdateWeekEnd()};w_W.ReplaceSample=3Dfunction(a,b){var c=3D=0A=
w_X(w_W.I,a);for(var d=3D0;d<c.length;d++){var =
e=3Dc[d];e.innerHTML=3Db}};w_W.UpdateWeekEnd=3Dfunction(){w_Ta(w_W.I,docu=
ment.forms.config.showWeekEnd.checked,"weekend");var =
a=3Dw_W.oc.weekly,b=3Ddocument.getElementById("weekly-menu-select"),c=3D0=
,d=3Ddocument.forms.config.weekPattern.selectedIndex;for(var =
e=3D0;e<b.options.length;e++){var =
f=3Db.options[e],g=3Da["weekly"+c][d];c++;var =
h=3Da["weekly"+c][d],i=3Dg;if(document.forms.config.showWeekEnd.checked)i=
=3Di+" - =
"+h;f.text=3Di}};w_W.UpdatePreviewPostTitles=3Dfunction(){w_Ta(w_W.I,=0A=
document.forms.config.showPosts.checked,"preview-posts")};w_W.ToggleDirec=
tion=3Dfunction(){var a=3Dw_W.I.getElementsByTagName("UL");for(var =
b=3D0;b<a.length;b++){var =
c=3Da[b],d=3Dc.ownerDocument.createDocumentFragment();while(c.hasChildNod=
es())d.appendChild(c.lastChild);c.appendChild(d)}var =
e=3Dw_W.I.getElementsByTagName("SELECT");for(var =
b=3D0;b<e.length;b++){var f=3De[b],g=3Df.options.length;for(var =
h=3D0;h<=3Dg/2;h++){var =
i=3Df.options[h].innerHTML,j=3Dg-h-1;f.options[h].innerHTML=3Df.options[j=
].innerHTML;f.options[j].innerHTML=3D=0A=
i}f.options[0].selected=3D0}};function w_Ta(a,b,c){var =
d=3Dw_X(a,c);for(var e=3D0;e<d.length;e++){var =
f=3Dd[e];w_ia(f,b)}}function w_X(a,b){var =
c=3D{};c.select=3Dfunction(d){return d&&w_o(d,b)};return w_r(a,c)}var =
_ArchiveConfig=3Dw_W;_ArchiveConfig._UpdateFrequency=3D_ArchiveConfig.Upd=
ateFrequency;_ArchiveConfig._Reformat=3D_ArchiveConfig.Reformat;_ArchiveC=
onfig._UpdateWeekEnd=3D_ArchiveConfig.UpdateWeekEnd;_ArchiveConfig._Updat=
ePreviewPostTitles=3D_ArchiveConfig.UpdatePreviewPostTitles;_ArchiveConfi=
g._ToggleDirection=3D=0A=
_ArchiveConfig.ToggleDirection;function =
w_Y(a){this.a=3Da;this.e=3Da.k()}w_Y.WIDGET_TYPE_NAME=3D"Label";w_Y.proto=
type.d=3Dfunction(){return =
w_Y.WIDGET_TYPE_NAME};w_Y.prototype.b=3Dfunction(){return =
this.a};w_Y.prototype.c=3Dfunction(a,b){this.a.h(b)};function =
w_Z(){}w_Z.sc=3D{sorting:null,title:null,securityToken:null};w_Z._Configu=
re=3Dfunction(){w_y.ConfigureWidget(w_Z.sc)};w_Z.HIDDEN_CLASS=3D"hidden";=
w_Z.PREVIEW_ROOT_ID=3D"preview-wrap";w_Z.PREVIEW_CLASS=3D"preview";w_Z._S=
howPreview=3Dfunction(a){var =
b=3Ddocument.getElementById(w_Z.PREVIEW_ROOT_ID),c=3D=0A=
w_X(b,w_Z.PREVIEW_CLASS);for(var =
d=3D0;d<c.length;d++)w_p(c[d],w_Z.HIDDEN_CLASS);w_q(document.getElementBy=
Id(a),w_Z.HIDDEN_CLASS)};var =
_LabelView=3Dw_Y,_LabelConfig=3Dw_Z;function =
w__(a){this.a=3Da;this.e=3Da.k()}w__.WIDGET_TYPE_NAME=3D"TextList";w__.pr=
ototype.d=3Dfunction(){return =
w__.WIDGET_TYPE_NAME};w__.prototype.b=3Dfunction(){return =
this.a};w__.prototype.f=3Dfunction(){return =
false};w__.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)}=
;var _TextListView=3Dw__;function =
w_0(a){this.a=3Da;this.e=3Da.k()}w_0.WIDGET_TYPE_NAME=3D"LinkList";w_0.pr=
ototype.d=3Dfunction(){return =
w_0.WIDGET_TYPE_NAME};w_0.prototype.f=3Dfunction(){return =
false};w_0.prototype.b=3Dfunction(){return =
this.a};w_0.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)=
};var =
_LinkListView=3Dw_0;_LinkListView.prototype=3Dw_0.prototype;function =
w_1(a){this.a=3Da;this.e=3Da.k()}w_1.prototype.d=3Dfunction(){return"Blog=
gerButton"};w_1.prototype.b=3Dfunction(){return =
this.a};w_1.prototype.c=3Dfunction(a,b){this.a.h(b)};var =
_BloggerButtonView=3Dw_1;var =
w_2=3Dfunction(a){this.a=3Da;this.e=3Da.k()};w_2.prototype.d=3Dfunction()=
{return"Poll"};w_2.prototype.b=3Dfunction(){return =
this.a};w_2.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure"){this.saveP=
ending=3Dfalse;this.a.h(b)}};w_2.prototype.A=3Dfunction(a,b){if(a=3D=3D"c=
onfigure")this.savePending=3Dfalse;w_.A(b,window)};w_2.adjustFrameHeight=3D=
function(){var a=3Ddocument.getElementsByTagName("iframe");for(var =
b,c=3D0;b=3Da[c];c++)if(b.name.indexOf("poll-widget")=3D=3D0)try{if(windo=
w.frames[b.name]&&window.frames[b.name].frames[0]){var d=3D=0A=
window.frames[b.name].frames[0].location.hash,e=3DNumber(d.replace("#",""=
));if(e)b.style.height=3De+(document.all?10:0)+"px"}}catch(f){}};window.s=
etInterval(w_2.adjustFrameHeight,500);var _PollView=3Dw_2;function =
w_3(a){this.a=3Da;this.e=3Da.k()}w_3.WIDGET_TYPE_NAME=3D"Navbar";w_3.prot=
otype.d=3Dfunction(){return =
w_3.WIDGET_TYPE_NAME};w_3.prototype.b=3Dfunction(){return =
this.a};w_3.prototype.f=3Dfunction(){return =
false};w_3.prototype.c=3Dfunction(a,b){this.a.h(b)};w_3.FilterMap=3D{navb=
artype:null,securityToken:null};w_3.ConfigureWidget=3Dfunction(){w_y.Conf=
igureWidget(w_3.FilterMap)};var =
_NavbarView=3Dw_3;_NavbarView.prototype=3Dw_3.prototype;_NavbarView._Conf=
igureWidget=3D_NavbarView.ConfigureWidget;function =
w_4(a){this.a=3Da;this.e=3Da.k()}w_4.WIDGET_TYPE_NAME=3D"Profile";w_4.pro=
totype.f=3Dfunction(){return false};w_4.prototype.d=3Dfunction(){return =
w_4.WIDGET_TYPE_NAME};w_4.prototype.b=3Dfunction(){return =
this.a};w_4.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)=
};w_4.prototype.j=3Dfunction(){if(this.a.i().isDisplayable=3D=3Dfalse)thi=
s.e.rootElement.style.display=3D"none";else =
this.e.rootElement.style.display=3D""};var _ProfileView=3Dw_4;function =
w_Ua(a){var b=3Da.toLowerCase();for(var =
c=3D0;c<document.styleSheets.length;c++){var =
d=3Ddocument.styleSheets[c],e=3Dd.cssRules?d.cssRules:d.rules;for(var =
f=3D0;f<e.length;f++){var =
g=3De[f];if(g.selectorText.toLowerCase().indexOf(b)!=3D-1)return =
g}return null}};var w_Va=3D"/feedReaderJson/";function =
w_Wa(a){w_Va=3Da}function w_Xa(a){return"FW_ScriptElement"+a}function =
w_5(){this.requests=3D{};this.currentId=3D0;this.completed=3D[]}w_5.proto=
type.Cb=3Dfunction(a,b){var =
c=3D++this.currentId,d=3D{};d.handler=3Da;d.errorHandler=3Db;this.request=
s[c]=3Dd;return c};w_5.prototype.ja=3Dfunction(a){var =
b=3Dthis.requests[a];this.requests[a]=3Dnull;this.completed.push(a);retur=
n b};w_5.prototype.db=3Dfunction(){while(this.completed.length){var =
a=3Dthis.completed.pop(),b=3Ddocument.getElementById(w_Xa(a));=0A=
if(b)b.parentNode.removeChild(b)}};w_5.prototype.Fb=3Dfunction(a,b,c,d,e,=
f){this.db();var =
g=3Dthis.Cb(c,d),h=3Dw_Va+"?feedUrl=3D"+encodeURIComponent(a)+"&n=3D"+b+"=
&requestId=3D"+encodeURIComponent(g)+"&locale=3D"+encodeURIComponent(e)+"=
&timeZone=3D"+encodeURIComponent(f),i=3Dw_Xa(g),j=3Ddocument.createElemen=
t("script");j.type=3D"text/javascript";j.charset=3D"utf-8";j.src=3Dh;j.id=
=3Di;document.getElementsByTagName("head")[0].appendChild(j)};var =
w_6=3Dnew w_5;function w_Ya(a){return w_6.ja(a).handler}function =
w_Za(a){return w_6.ja(a).errorHandler}=0A=
function w__a(a,b,c,d,e,f){w_6.Fb(a,b,c,d,e,f)}var =
_FW_setFeedReaderJsonBaseUrl=3Dw_Wa,_FW_getHandler=3Dw_Ya,_FW_getErrorHan=
dler=3Dw_Za;function =
w_7(a,b,c,d){this.w=3Da;this.Ja=3Db;this.Dc=3Dc;this.ea=3Dd;this.Ya=3Dnew=
 =
w_C("status-message");this.ba=3D"";this.ic=3Dfalse}w_7.uc=3D5;w_7.qc=3D"m=
oduleTitle";w_7.Kc=3D"feedUrl";w_7.hb=3D"step1";w_7.ib=3D"step1Buttons";w=
_7.jb=3D"step2";w_7.kb=3D"preview";w_7.vc=3D"item-title";w_7.Hb=3D"item-d=
ate";w_7.Gb=3D"item-author";w_7.T=3D"feedUrl";w_7.prototype.ha=3Dfunction=
(a){this.Ya.ga();w_B.ClearError(w_7.T);if((!a.items||a.items.length=3D=3D=
=3D0)&&a.title=3D=3D=3D"")this.Z();else{var =
b=3Ddocument.getElementById(w_7.qc);if(b.value=3D=3D=3D""||this.ic){b.val=
ue=3D=0A=
a.title;this.Ra=3Da.title}this.S(a);this.sb();this.Bb(b)}};w_7.prototype.=
Bb=3Dfunction(a){a.style.display=3D"none";a.style.display=3D""};w_7.proto=
type.Z=3Dfunction(){this.Ya.ga();w_B.SetError(w_7.T,this.ea._invalidFeedU=
rl);this.W()};w_7.prototype.Ea=3Dfunction(){};w_7.prototype.S=3Dfunction(=
a){this.Db(this.Ja);for(var b=3D0;b<a.items.length;b++){var =
c=3Da.items[b];this.bb(c,this.Ja)}this.ua();this.ra();this.sa();this.ta()=
};w_7.prototype.W=3Dfunction(){this.t(w_7.hb,true);this.t(w_7.ib,true);th=
is.t(w_7.jb,false);this.t(w_7.kb,=0A=
false)};w_7.prototype.sb=3Dfunction(){this.t(w_7.hb,false);this.t(w_7.ib,=
false);this.t(w_7.jb,true);this.t(w_7.kb,true)};w_7.prototype.t=3Dfunctio=
n(a,b){w_n(document.getElementById(a),b)};w_7.prototype.Zb=3Dfunction(a){=
return =
a?"":"none"};w_7.prototype.Fa=3Dfunction(a,b){if(this.w)return;var =
c=3Dw_Ua(a);c.style.display=3Dthis.Zb(b)};w_7.prototype.za=3Dfunction(a){=
this.Ra=3Da;this.ta()};w_7.prototype.ta=3Dfunction(){if(this.w)return;thi=
s.Dc.innerHTML=3Dthis.Ra};w_7.prototype.Ca=3Dfunction(a){this.Va=3Da;this=
.ra()};w_7.prototype.ra=3D=0A=
function(){this.Fa(w_7.Gb,this.Va)};w_7.prototype.Da=3Dfunction(a){this.W=
a=3Da;this.sa()};w_7.prototype.sa=3Dfunction(){this.Fa(w_7.Hb,this.Wa)};w=
_7.prototype.Aa=3Dfunction(a){this.kc=3Da;this.ua()};w_7.prototype.ua=3Df=
unction(){var a=3Dthis.Ja.getElementsByTagName("li");for(var =
b=3D0;b<a.length;b++)w_n(a[b],b<this.kc)};w_7.prototype.bb=3Dfunction(a,b=
){var c=3Ddocument.createElement("li");b.appendChild(c);var =
d=3Ddocument.createElement("span");d.className=3Dw_7.vc;c.appendChild(d);=
var e=3Ddocument.createElement("a");d.appendChild(e);=0A=
e.href=3Da.alternate.href;if(this.w)e.target=3D"_self";else =
e.target=3D"_blank";e.innerHTML=3Da.title;if(!this.w||this.Wa){var =
f=3Ddocument.createElement("span");f.className=3Dw_7.Hb;f.innerHTML=3D"&n=
bsp;-&nbsp;"+a.str_published;c.appendChild(f)}if(!this.w||this.Va){var =
g=3Ddocument.createElement("span");g.className=3Dw_7.Gb;g.innerHTML=3D"&n=
bsp;-&nbsp;"+a.author;c.appendChild(g)}};w_7.prototype.Db=3Dfunction(a){w=
hile(a.firstChild)a.removeChild(a.firstChild)};w_7.prototype.wa=3Dfunctio=
n(a,b,c,d,e,f,g){if(!a||a=3D=3D=3D""){w_B.SetError(w_7.T,=0A=
this.ea._missingFeedUrl);return}if(a.length>2083){w_B.SetError(w_7.T,this=
.ea._feedUrlTooLong);return}this.Ya.o(this.ea._retrievingFeed);this.Ba(a,=
b,c,d,e,f,g);this.Y(w_7.prototype.ha,w_7.prototype.Z)};w_7.prototype.Eb=3D=
function(a,b,c,d,e,f,g){this.Ba(a,b,c,d,null,e,f);var =
h=3Dw_w(w_7.prototype.Y,this,w_7.prototype.S,w_7.prototype.Ea);window.set=
Interval(h,g*1000)};w_7.prototype.Y=3Dfunction(a,b){var =
c=3Dw_w(a,this),d=3Dw_w(b,this);w__a(this.ba,w_7.uc,c,d,this.Cc,this.Hc)}=
;w_7.prototype.Ba=3Dfunction(a,b,c,d,=0A=
e,f,g){this.ic=3Dthis.ba!=3D""&&this.ba!=3Da;this.ba=3Da;this.kc=3Db;this=
.Wa=3Dc;this.Va=3Dd;this.Ra=3De;this.Cc=3Df;this.Hc=3Dg};w_7.prototype._G=
oToStep1=3Dw_7.prototype.W;w_7.prototype._RetrieveFeedAndGoToStep2=3Dw_7.=
prototype.wa;w_7.prototype._SetModuleTitleAndRefresh=3Dw_7.prototype.za;w=
_7.prototype._SetShowItemAuthorAndRefresh=3Dw_7.prototype.Ca;w_7.prototyp=
e._SetShowItemDateAndRefresh=3Dw_7.prototype.Da;w_7.prototype._SetNumItem=
sShowAndRefresh=3Dw_7.prototype.Aa;var _FW_FeedController=3Dw_7;function =
w_8(a){this.a=3Da}w_8.prototype.b=3Dfunction(){return =
this.a};w_8.prototype.d=3Dfunction(){return"Feed"};w_8.prototype.c=3Dfunc=
tion(a,b){this.a.h(b)};w_8.prototype.j=3Dfunction(){var =
a=3Dthis.a.z("feedItemListDisplay"),b=3Dnew =
w_7(true,a,null,null),c=3Dthis.a.k().data;b.Eb(c.feedUrl,c.numItemsShow,c=
.showItemDate,c.showItemAuthor,c.locale,c.timeZone,c.feedWidgetRefreshInt=
ervalSec)};w_8.rc=3D{moduleTitle:null,feedUrl:w_B.GetRequiredStringFilter=
(),numItemsShow:w_B.GetNumberFilter(1,5),showItemDate:null,showItemAuthor=
:null,=0A=
securityToken:null};w_8.setConfigurationOptions=3Dfunction(){w_y.Configur=
eWidget(w_8.rc)};var =
_FeedView=3Dw_8;_FeedView._setConfigurationOptions=3Dw_8.setConfiguration=
Options;function =
w_9(a){this.a=3Da;this.e=3Da.k()}w_9.prototype.d=3Dfunction(){return"Gadg=
et"};w_9.prototype.b=3Dfunction(){return =
this.a};w_9.prototype.c=3Dfunction(a,b){this.a.h(b)};var =
_GadgetView=3Dw_9;function _SW_toggleReaderList(a,b){var =
c=3Ddocument.getElementById("SW_READER_LIST_"+b),d=3Ddocument.getElementB=
yId("SW_READER_LIST_CLOSED_"+b);if(!a)a=3Dwindow.event;a.cancelBubble=3Dt=
rue;if(a.stopPropagation)a.stopPropagation();var =
e=3Ddocument.onclick;if(window.oldSubscribePopup&&window.oldSubscribePopu=
p!=3Dc){window.oldSubscribePopup.style.display=3D"none";window.oldSubscri=
bePopupUnder.style.visibility=3D"visible"}if(c.style.display=3D=3D"none")=
{c.style.display=3D"";c.style.zIndex=3D1000;window.oldSubscribePopup=3Dc;=
window.oldSubscribePopupUnder=3D=0A=
d;d.style.visibility=3D"hidden";document.onclick=3Dfunction(){c.style.dis=
play=3D"none";d.style.visibility=3D"visible";if(e)document.onclick=3De}}e=
lse{c.style.display=3D"none";d.style.visibility=3D"visible";if(e)document=
.onclick=3De}return false}function _SW_hideReaderList(a){var =
b=3Ddocument.getElementById("SW_READER_LIST_"+a),c=3Ddocument.getElementB=
yId("SW_READER_LIST_UNDER"+a);b.style.display=3D"none";c.style.visibility=
=3D"visible"}function =
w_$(a){this.a=3Da;this.e=3Da.k()}w_$.WIDGET_TYPE_NAME=3D"Subscribe";w_$.p=
rototype.f=3D=0A=
function(){return false};w_$.prototype.d=3Dfunction(){return =
w_$.WIDGET_TYPE_NAME};w_$.prototype.b=3Dfunction(){return =
this.a};w_$.prototype.c=3Dfunction(a,b){if(a=3D=3D"configure")this.a.h(b)=
};var _SubscribeView=3Dw_$;=0A=

------=_NextPart_000_001F_01C8A309.BB7A80A0--
